
Aleksandr Golovin stabbed in a cross from Jordan Teze on the hour at the Stade Louis II before Folarin Balogun struck for the sixth match running with a sublime chip.
Amine Gouiri reduced the deficit late on, but Monaco stretched their unbeaten league run to 10 matches to continue a remarkable revival that began in January.
“It’s a fantastic streak we’re on and I hope we can keep it going,” Monaco goalkeeper Lukas Hradecky told broadcaster Ligue 1+.
“We have the team, slowly we have no more injuries, and you start to see how much quality there is in the team.”
The principality side moved level on points with fourth-placed Marseille and just one behind Lille. The top three teams in France qualify directly for next season’s Champions League.
Monaco’s prospects of European football looked remote at the start of the year after a run of seven losses in eight games left coach Sebastien Pocognoli at risk of losing his job.
They also climbed above Lyon, who dropped to sixth and are winless in six matches following a 0-0 draw at Angers earlier on Sunday.
Lorient and Paris FC drew 1-1, while Le Havre and Auxerre also shared the points.
Metz are closer to relegation after only managing a 0-0 draw at home to second-bottom Nantes, who played with 10 men for more than half the match.
Paris St-Germain are on course for a 12th title in 14 years following their 3-1 win over Toulouse on Friday.
Closest rivals Lens lost 3-0 at Lille on Saturday and are four points adrift of European champions PSG, who also have a game in hand.