Lille claimed a narrow away victory at Angers to finish one point ahead of Paris St-Germain and clinch their fourth Ligue 1 title.
Jonathan David netted an early goal and Burak Yılmaz doubled Lille’s lead from the spot on the stroke of half-time.
Angers’ Angelo Fulgini scored a late consolation goal in injury time but Lille’s victory rarely looked in doubt.
Paris St-Germain beat Brest 2-0 but failed to lift the crown for only the second time in nine years.
Monaco, who drew 0-0 with Lens, took the final Champions League spot after Lyon lost 3-2 to Nice.
Lyon will be in next season’s Europa League while Marseille and Rennes qualify for the Europa Conference League.
Nantes are set for a relegation play-off with Toulouse in four days’ time after losing 2-1 at home to Montpellier.
Outsiders do it again
Despite their underdog tag, Lille have been here before.
In 2010/11 a squad that included Eden Hazard and Gervinho helped the northern France side lift their third Ligue 1 title and their first league crown in 57 years.
This season they’ve relied on 21-year-old Canada forward David and 35-year-old Turkey striker Yilmaz.
And it was David who settled any early nerves, latching on to a Renato Sanchez pass and side-footing Lille into the lead inside 10 minutes.
On the stroke of half-time David was caught by goalkeeper Paul Bernardoni in the penalty area with Lille player of the season Yilmaz finding the corner from 12 yards.
Lille may have been without captain and former Southampton defender Jose Fonte through suspension, but they were rarely threatened in the second half, with Fulgini’s late header the only negative in an otherwise perfect performance.