Lyon missed out on the chance to move into a Champions League berth and finished with nine men as they lost 1-0 at Lille.
Sofiane Boufal’s first-half free-kick extended Lille’s unbeaten Ligue 1 run to five matches while Lyon, denied a place in the top three, had both Christophe Jallet and Clement Grenier sent off.
Lille scored in the 28th minute when Boufal won a free-kick within strike range and curled the ball into the top corner to halt their opponents’ three-game winning run.
Lyon were reduced to 10 men on the hour-mark when defender Jallet was shown his second yellow card for a foul on Eric Bautheac and midfielder Grenier received his second booking in the 88th minute for his challenge on Florent Balmont.
Saidi Ntibazonkiza’s solitary strike earned Caen a 1-0 home win over Rennes and halted their three-game losing run.
Burundi international Ntibazonkiza drilled home, while Rennes goalkeeper Benoit Costile denied the home side from adding to their score with a string of fine saves.
Michy Batshuayi headed a stoppage-time equaliser to rescue a point for 10-man Marseille in a 1-1 home draw against St Etienne.
Belgium striker Batshuayi struck in the fourth minute of time added on after Kevin Monnet-Paquet’s 85th-minute goal appeared to have secured the points for the visitors.
Marseille played out the last 30 minutes with 10 men following defender Nicolas N’Koulou’s crude challenge from behind on Vincent Pajot.
Zlatan Ibrahimovic rounded off a successful week by netting a brace as Paris Saint Germain moved 27 points clear at the top thanks to a 4-1 demolition of Reims.
PSG’s number 9 took his tally to 22 league goals for the season with a duo of well-taken goals while Edinson Cavani rounded of an equally enjoyable few days with a first-half effort, following his strike against Chelsea in midweek.
Gregory van der Wiel had opened the scoring before Prince Oniangue briefly brought the visitors level.
Monaco opened up a five-point gap in second place thanks to a hard-fought 3-1 win against bottom club Troyes.
Despite some early dominance, Mohamed Bradja’s side found themselves a goal behind on 25 minutes when Guido Carrillo pounced on Chris Mavinga’s block to head home from close range.
Then, with half-time fast approaching, Carrillo grabbed his and Monaco’s second of the game, heading home at the back post from Andrea Raggi’s delivery.
Babacar Gueye offered hope for the visitors when he headed Benjamin Nivet’s header beyond Subasic on 79 minutes.
However, Monaco wrapped up the points in added time when Kylian Mbappe Lottin scored his first ever Ligue 1 goal, converting from 12 yards after being picked out by Helder Costa.
Lorient came out on top in a seven-goal thriller with a 4-3 win against Guingamp.
L’EAG raced into a two-goal lead, thanks to a first-half double from Yannis Salibur, before the hosts turned the game on its head.
Firstly, Majeed Waris deflected Jimmy Cabot’s first-half effort beyond Jonas Lossl before Benjamin Jeannot levelled at the second attempt on 48 minutes and Waris grabbed his second just sixty seconds later to hand Lorient the lead.
Jimmy Briand restored parity for the visitors, netting from Nicolas Benezet’s cutback, but Raphael Guerreiro broke Guingamp hearts in added time when he sealed all three points for Lorient with a perfectly weighted free-kick that left Lossl with little chance.
Montpellier opened up a four-point gap over the bottom three thanks to a second successive league win, a 3-2 victory over out-of-form Angers.
The visitors made a blistering start and found themselves with a three-goal half-time advantage. Kevin Berigaud fired them ahead inside 90 seconds and Jerome Rousslillion teed up Moustapha Yatabare to net from close range before 10 minutes were up.
And the three points were all but wrapped up before the break when Ryad Boudebouz picked out Souleymane Camara to head beyond the advanced Denis Petric.
Bouka Moutou reduced the deficit, netting after Billy Ketkeophomphone’s effort came back off a post on 64 minutes, and Goran Karanovic added Angers’ second in added time, but it was a case of too little too late as Montpellier held out for the win.
Ten-man GFC Ajaccio suffered heartbreak late on as Martin Braithwaite’s added-time leveller earned a point for Toulouse in a 1-1 draw.
The hosts had the best opportunity inside the opening 45 minutes when Oscar Trejo found Braithwaite, but his back post header grazed the opposite post in what proved to be the best chance of the half.
Ajaccio took full advantage of their first real chance, though, when Kevin Mayi pounced on a rebound just before the hour mark after Alban Lafont twice denied Issiaga Sylla.
The visitors were reduced to 10 men late on when Sylla was shown his second yellow of the game and that proved a turning point as Braithwaite equalised in added time for Toulouse after Clement Maury pushed Adrien Regatti’s effort into his path.
Bordeaux held on as they played out a goalless stalemate against Nice at Nouveau Stade de Bordeaux.
Despite the third-placed visitors enjoying the lion’s share of possession, Les Girondins did not their allow their opponents to dominate.
Cheick Diabate sent his header wide just after the half-hour and Thomas Toure hit the woodwork six minutes before the break as the home side pressed.
In the second half, Mali international Diabate fired over and headers from Cedric Yambere and Adam Ounas missed the target, while Jean Seri’s shot sailed wide at the other end for Nice but neither side could break the deadlock.