Lille returned to the top of Ligue 1 with a crucial victory at title rivals Paris St-Germain who had Neymar sent off in the closing stages.
Twenty-year-old Jonathan David’s deflected effort opened the scoring for Lille midway through the first half.
PSG’s Neymar and Lille’s Tiago Djalo were both shown second yellow cards late on after a coming together.
Neymar appeared to push Djalo after the ball had gone out of play, with the Lille defender also seeing red.
The French champions, aiming for four consecutive league titles, are now three points behind Christophe Galtier’s side with seven games remaining for both clubs.
Having lost their past two matches, Lille – who last won the Ligue 1 crown in 2010-11 – had seemingly opened the door to title-chasing PSG.
Les Parisiens defeated Lille 3-0 in the French Cup in March but Mauricio Pochettino’s side struggled to get going at Parc des Princes.
PSG, who have now lost 10 games in all competitions this season, next face Bayern Munich in the Champions League quarter-finals on Wednesday (20:00 BST).
3Embaló Djaló6José Fonte5Botman28Mandava
Match ends, Paris Saint Germain 0, Lille 1.
Second Half ends, Paris Saint Germain 0, Lille 1.
Attempt missed. Marquinhos (Paris Saint Germain) header from the centre of the box misses to the right. Assisted by Ángel Di María with a cross following a corner.
Corner, Paris Saint Germain. Conceded by Domagoj Bradaric.
Foul by Julian Draxler (Paris Saint Germain).
Reinildo (Lille) wins a free kick in the defensive half.
Substitution, Lille. Domagoj Bradaric replaces Jonathan Ikoné.
Offside, Lille. Jonathan Ikoné tries a through ball, but Burak Yilmaz is caught offside.
Second yellow card to Tiago Djaló (Lille).
Second yellow card to Neymar (Paris Saint Germain).
Neymar (Paris Saint Germain) wins a free kick on the left wing.
Foul by Tiago Djaló (Lille).
Attempt missed. Neymar (Paris Saint Germain) right footed shot from outside the box is too high from a direct free kick.
Benjamin André (Lille) is shown the yellow card.
Neymar (Paris Saint Germain) wins a free kick in the attacking half.
Foul by Benjamin André (Lille).
Kylian Mbappé (Paris Saint Germain) is shown the yellow card.
Foul by Kylian Mbappé (Paris Saint Germain).
Attempt missed. Leandro Paredes (Paris Saint Germain) left footed shot from outside the box is high and wide to the left.
Zeen is a next generation WordPress theme. It’s powerful, beautifully designed and comes with everything you need to engage your visitors and increase conversions.