Lyon moved second in Ligue 1 as Marseille failed to take advantage of Paris Saint-Germain's slip at Strasbourg after stumbling to a 1-1 draw at Montpellier on Sunday.
Rudi Garcia's Marseille were fortunate to escape Montpellier with a point as Florian Thauvin's disputed penalty negated Giovanni Sio's opener for the home side at the Stade de la Mosson.
Montpellier thought they had grabbed a late winner when Souleymane Camara's glancing header skipped past Steve Mandanda, but Vitorino Hilton was adjudged to have interfered and the goal was ruled out for offside after heated protests from both sides.
"Hilton got in my way for the goal because I moved a bit later and the referee saw the same thing so for me the offside decision was right," Marseille goalkeeper Mandanda told Canal+.
Nordi Mukiele could still have snatched all three points for Montpellier at the death but scooped over from a free header, as Marseille clung on to extend their unbeaten league run to 11 matches.
Marseille dropped to fourth on goal difference but are level on 32 points alongside Lyon and defending champions Monaco.
Earlier, Maxwel Cornet's tap-in and Mariano Diaz's stunning 12th league goal of the season were enough for Lyon to scratch out a hard-fought 2-1 win at Caen to blast away the blues of their shock home defeat to struggling Lille midweek.
Caen pushed Lyon all the way and pulled a goal back through Ivan Santini in stoppage time but stay seventh on 23 points after their defeat.
"They're a very difficult side to play at home, so it was important to show we had lots of character after losing at home to Lille," Lyon coach Bruno Genesio said.
Lyon are nine points behind Neymar's league leaders PSG, who suffered a first defeat since April in dramatic style at struggling Strasbourg on Saturday, going down 2-1 to the newly-promoted side in a pulsating match ahead of their trip to Bayern Munich on Tuesday.
Lyon came into Sunday's match smarting from their loss to Lille, and took the lead almost immediately, with Cornet lashing home a loose ball from a 10th-minute goalmouth scramble.
Caen kept up the pressure in a scrappy encounter but Diaz made sure of the points nine minutes after the break by crashing a bouncing ball past Caen keeper Remy Vercoutre.
The hosts refused to give up and Santini's neat stoppage-time finish gave the home fans hope, but creaking Lyon managed to keep them at bay and just hold on for the win.