The result sees Lille take a big step towards a first Ligue 1 title in a decade, just before the Qatari takeover of PSG which changed the face of French football.
It would be a remarkable achievement for the club from France’s far north to beat the Parisians, who have won seven of the last eight league crowns and face Bayern Munich away in the first leg of their Champions League quarter-final in midweek.
However PSG have now suffered three straight home league losses for the first time since 2007, and they trail Christophe Galtier’s Lille by three points with seven games left.
Monaco are another point behind in third after beating Metz 4-0 earlier, while Lyon are contenders too — they can reclaim third spot and go level on points with PSG by beating Lens in the late game.
Mauricio Pochettino’s PSG had been fancied to go on and ease to another league title after winning 4-2 in Lyon just before the recent international break, but this result raises doubts about their credentials.
They have taken just a single point from four games against Lille and Monaco this season. Lyon also beat them at the Parc des Princes.
BEN YEDDER SCORES TWICE IN MONACO WIN
PSG may still fancy their chances of avenging last season’s defeat in the Champions League final when they face a Bayern side missing the injured Robert Lewandowski.
However they will need to perform far better than they did here against a well organised Lille side who survived an early scare before taking the lead.
Mike Maignan turned a Kylian Mbappe shot around the post not long before the goal arrived from the visitors’ first attack.
Jonathan Ikone picked out David whose shot from 12 yards deflected in off Thilo Kehrer for his 10th of the season.
The 21-year-old striker was replaced by Timothy Weah before half-time, while Lille held on at the other end, with Neymar having one shot saved by Maignan in the second half and then heading wide from a Marquinhos cross.
Lille might even have scored a second as Burak Yilmaz was denied by Keylor Navas after a counter-attack.
Monaco, the 2017 champions, scored all their goals in the second half against a Metz side who finished with 10 men.
Cesc Fabregas scored a penalty and Kevin Volland netted his 14th of the season before France striker Wissam Ben Yedder came off the bench to crash in the third on 77 minutes.
Ben Yedder scored again from the spot late on, taking his league tally for the season to 15 goals, after Metz captain John Boye was shown a second yellow card and dismissed for fouling Gelson Martins.