A first-half penalty from Lisandro Lopez and a stunning free-kick after the break from Clement Grenier ensured Lyon finished third, ahead of rivals Saint-Etienne and Lille, who were beaten to fourth place by Nice.
Remi Garde's Lyon will play in European football's elite club competition next season alongside Marseille and champions Paris Saint-Germain while Rennes had to settle for 13th place after a disappointing season.
Ten-man St Etienne may have missed out on the top three, but they had already secured a Europa League spot thanks to winning the Coupe de la Ligue and their 1-1 draw with Lille at the Grand Stade denied their opponents a European place.
Romain Hamouma's second-half strike proved to be the crucial goal after Salomon Kalou had fired Lille into a first-half lead.
That result allowed Nice to take fourth with their deserved 2-0 victory at Ajaccio. Goals from Dario Cvitanich and Eric Bautheac were enough to secure a Europa League play-off place, leaving 17th-placed Ajaccio with just one win from their last 10 outings.
PSG brought the curtain down on a memorable season with a 3-1 victory as Kevin Gameiro scored twice to down 10-man Lorient.
Zlatan Ibrahimovic opened the scoring after the break before Gameiro hit a brace against his former club.
Arnaud Le Lan then scored a penalty for eighth-placed Lorient in the last 10 minutes following substitute goalkeeper Ronan Le Crom's dismissal.
At the other end of the table, two late Valenciennes goals confirmed Troyes' relegation to Ligue 2.
ESTAC took an early lead through Benjamin Nivet and held it until Benjamin Angoua levelled in the 80th minute, but Troyes' hopes were firmly doused three minutes from time when Gregory Pujol notched.
Sochaux, meanwhile, gained the point they needed to stay up with an uninspiring goalless draw in Bastia, while Evian finished 16th after losing 2-1 to Coupe de France final opponents Bordeaux.
The warm-up for Friday's showpiece saw a first-half Cheikh Diabate brace secure all three points for Les Girondins despite Yannick Sagbo's reply on the stroke of half-time.
Wissam Ben Yedder scored twice in the opening 11 minutes as Toulouse finished their season with a 2-0 victory at home to Montpellier and Marseille brought an underwhelming campaign to a close with a goalless draw at home to Reims.
Elsewhere, Nancy came out on top in the battle between two relegated teams by claiming a 2-1 victory over Brest at the Stade Francis-Le Ble.
Sebastian Puygrenier's first-half brace proved enough to guarantee all three points for Patrick Gabriel's men despite Charlison Benschop pulling a goal back at the death for Ligue 1's bottom club.