Lille goalkeeper Vincent Enyeama denied striker Mustapha Yatabare in the 52nd and parried a volley from midfielder Fatih Atik in the 55th. Christophe Mandanne then rounded Enyeama in the 60th but centerback Simon Kjaer rushed back to clear off the line the low effort from the Guingamp forward.
At Stade Gerland, Max-Alain Gradel gave Saint-Etienne the victory in the heated Rhone derby. The Saint-Etienne substitute converted a rebound in the 74th after goalkeeper Anthony Lopes palmed a cross from Renaud Cohade into his path.
Saint-Etienne opened the scoring in the 28th when Brazilian forward Brandao knocked a high ball down for Mevlut Erding, who beat Lopes from close range.
Bafetimbi Gomis helped the hosts equalize in the 39th by dribbling past two defenders to send a ball over the top to Alexandre Lacazette. The Lyon striker volleyed into the bottom corner for his 14th league goal this season.
A physical Saint-Etienne side kept Yoann Gourcuff quiet. The Lyon playmaker was replaced at halftime after picking up an ankle injury after a tackle from Cohade, who received a yellow card.
Saint-Etienne remained in fourth place, three points behind Lille but six clear of Lyon.
In Rennes, the hosts took the lead in the 14th minute with a powerful strike from winger Romain Alessandrini that goalkeeper Mickael Landreau fumbled into his own net.
Sweden forward Ola Toivonen fired a half-volley into the top corner to double the lead in the 28th and set up midfielder Jean Makoun for the third goal in the 59th.