Nantes, with European aspirations themselves, arrived at Parc Olympique Lyonnais in good form having lost only one of their last 20 matches in all competitions and looked solid defensively - until their resistance was broken in the final 10 minutes.
A deflected shot from Rachid Ghezzal which hit the crossbar was the closest Lyon came to scoring until teenage substitute Gaetan Perrin broke the deadlock after 83 minutes.
Alexandre Lacazette's injury-time penalty sealed all three points and a fourth straight home win for Lyon.
Rennes had gone third with victory over Marseille on Saturday morning (AEDT) but were pushed down to fourth place by Lyon.
St Etienne and Caen moved above Nantes, who now sit eighth, to enhance their European qualification hopes.
Late goals from Nolan Roux, Oussama Tannane and Valentin Eysseric gave St Etienne a 3-0 home win over Montpellier, leaving the beaten side just three points clear of the drop zone.
Caen came from behind to beat bottom-of-the-table Troyes 2-1. Xavier Thiago headed the strugglers in front but Alaeddine Yahia nodded the hosts level and Ronny Rodelin, with another headed goal, won it for the Normandy club.
Lille kept alive their European hopes with a 1-0 home win over lowly Toulouse courtesy of Morgan Amalfitano's strike, while Younousse Sankhare scored the only goal of the game at the Stade Auguste Delaune to ease Guingamp away from danger and keep Reims in the bottom three.
Elsewhere, Angers secured their first win in eight matches by thrashing Lorient 5-1.
First-half efforts from Billy Ketkeophomphone, Thomas Mangani and Romain Saiss had Angers firmly in control before Majeed Waris pulled a goal back just before half-time. Cheikh N'Doye and Mangani, from the penalty spot, added further goals in the second half.