Monaco's Ligue 1 title hopes were dealt a huge blow as Saint-Etienne boosted their own UEFA Champions League prospects with a 2-0 win.
Christophe Galtier's men produced another excellent home performance at the Stade Geoffroy Guichard to secure a result that gives league leaders Paris Saint-Germain the chance to further extend their lead at the top when they host Marseille on Sunday.
Midfielder Fabien Lemoine opened the scoring for the hosts on 17 minutes as he fired home a sumptuous strike from the edge of the area after Monaco had failed to deal with a corner.
And Saint-Etienne made sure of the points midway through the second half, Romain Hamouma securing victory with a fine individual goal.
The winger raced past several Monaco defenders before finding the net from 20 yards to score his 10th of the season and keep Monaco five points adrift of PSG ahead of their clash with Marseille on Sunday.
At the other end of the table, Sochaux continued their recent resurgence by beating Bordeaux 2-0.
On loan Marseille forward Jordan Ayew put Sochaux ahead after 70 minutes, with striker Cedric Bakambu wrapping things up 12 minutes later as Herve Renard's men moved within five points of safety with their third win in five league games.
There was no such success for Valenciennes, who slipped below Sochaux by virtue of a 3-1 loss at Reims.
Striker Nicolas de Preville found the net after 21 minutes to give Reims the lead, which was doubled as midfielder Prince Oniangue scored his third goal in two games seven minutes before the break.
Substitute Gaetan Charbonnier's 77th-minute goal capped an excellent performance from Reims, whose only mistake came three minutes from time when goalkeeper Johnny Placide put through his own net.
Guingamp are 10 points clear of the drop zone after a 2-0 derby win at neighbours Rennes, which was sealed thanks to a first-half strike from midfielder Thibault Giresse and a Mustapha Yatabare penalty in the final minute of injury time.
Elsewhere, Toulouse eased to a 2-0 win at 10-man Nice, while Lorient and Bastia played out a 1-1 draw.