Lille denied Paris St Germain in stoppage time as Jonathan David earned his side a dramatic 1-1 draw.

Kylian Mbappe’s 68th-minute penalty, his 16th goal of the Ligue 1 season, had PSG on course for victory and a seven-point lead in the table.

Substitute David headed home in the 94th minute, though, to reward a late flurry from the home side.

Mbappe was well marshalled in the early stages by Nabil Bentaleb, who cleared when Ousmane Dembele’s cutback was just behind the France frontman after a scorching run down the wing.

Lille’s first attacks of note came when Edon Zhegrova twice cut inside PSG left-back Lucas Hernandez on to his left foot – he flashed a low shot just wide of the near post from the first chance then sliced across goal from the second after the ball bobbled.

Dembele shot wide after he was threaded in by Lee Kang-in for the clearest chance of the first half.

Lucas Chevalier tipped over Vitinha’s fierce near-post drive and defender Leny Yoro put the ball just over his own bar from the resulting corner.

Alexsandro made a crucial interception from another Dembele cross as the half ended goalless.

Dembele’s return ball just eluded Vitinha as PSG began the second half on the front foot, though Angel Gomes whistled a deflected effort just wide at the other end. Benjamin Andre headed wide from the corner.

Yusuf Yazici’s shot was blocked in a scramble in the PSG box as Les Dogues got their tails up.

Alexsandro prevented Vitinha’s scoop reaching Mbappe and then blocked the striker’s shot later in the same attack.

Bafode Diakite’s clumsy challenge on Hernandez just after the hour mark gifted Mbappe the chance from the spot and earned the defender a booking. Mbappe could be seen wishing Chevalier “bonne chance (good luck)” before firing crisply past him into the left side of the net.

Kylian Mbappe, second right, celebrates with team-mates after his opener

Mbappe delivered a perfect cross moments later which was wasted by Dembele’s poor control.

Yazici’s celebrations were quickly cut short by an offside flag after he slammed home Gomes’ through-ball before Mbappe clipped wide from substitute Achraf Hakimi’s cross.

Another superb run by Zhegrova set up Yazici, whose shot was deflected wide by Marquinhos, and keeper Arnau Tenas picked David’s low cross off the toes of Gomes.

Tiago Santos’ deflected effort dipped just over the crossbar and Tenas smothered David’s effort after brilliant work by Adam Ounas – Lille’s first shot on target, in the 92nd minute.

It was not to be their last. Marco Asensio, somehow finding himself in the right-back position, gave possession away to Remy Cabella and, though Ounas’ deflected shot was saved, David nodded in the rebound.

The result left PSG five points clear of second-placed Nice, with Lille lying fourth.