Zimbabwean forward Tino Kadewere scored a late goal as Lyon beat Angers 1-0 and placed second in Ligue 1, just four points behind leader Paris Saint-Germain.
Montpellier beat Strasbourg 4-3 in a dramatic match earlier in the day and came third alongside Monaco, behind Lyon on goal difference.
Defending champion PSG blew a two-goal lead to lose 3-2 in Monaco on Friday and give the chasing group a chance to close the gap.
Lyon, last season’s Champions League semi-finalists, took advantage but needed a goal from Kadewere in the 80th minute.
“We came to win and finish second and we did it,” Lyon coach Rudi Garcia said. “It wasn’t our best game, but we had games where we had a lot of chances but we didn’t win, so that balances that out.”
The 24-year-old Kadewere, who arrived in the closed season from second-division team Le Havre, has scored four goals in Ligue 1 this season.
Montpellier has an identical record and goal difference with Monaco, although fifth-placed Lille could outperform par and Lyon and move two points behind PSG if they beat Lorient later on Sunday.
Montpellier, the 2012 champion, led 2-0 with first goals from Pedro Mendes and Andy Delort, but Strasbourg responded with a pair of penalties from Kenny Lala and Habib Diallo.
Former Wigan Athletic striker Delort regained the hosts’ lead and, although Ludovic Ajorque tied at the edge of the break, Gaetan Laborde had the last word midway through the second period.
Marseille, sixth-placed, is just six points off the pace with two games in hand.