Nantes saw little of the possession, had a player sent off only to see the red card overturned on VAR review and then watched as Neymar squandered a penalty in a thrill-a-minute clash at the Stade de la Beaujoire.
But they came away with a full haul of points in a surprise reversal for the star-studded PSG line-up.
Randal Kolo Muani put Nantes ahead within four minutes after a storming run down the left wing by Moses Simon, and they were 2-0 up some 12 minutes later when teenager Quentin Merlin scored his first goal for his hometown club with a rasping left-footed shot.
Nantes defender Dennis Appiah was sent off two minutes before the break for tripping Kylian Mbappe as he headed goalwards. But the referee was asked to review his decision by the VAR and changed it to a yellow card when replays showed the clash was not as cynical as first presumed.
VAR then intervened again in stoppage time before the break when Georginio Wijnaldum handled the ball in his own penalty box, handing Nantes a spot kick which Ludovic Blas converted for a stunning halftime lead.
The Brazilian, back in the starting line-up for the first time since November, then had a chance to further reduce the deficit when Appiah again brought down Mbappe, but Neymar’s penalty was a weak effort straight at Alban Lafont.
Mbappe then produced an uncharacteristic miss from point-blank range in the final 20 minutes as PSG kept up the pressure but were unable to make use of their numerous chances.
The win saw Nantes leap from 10th to fifth in the Ligue 1 standings as they push for a spot in next season’s European club competition.
Lens took a 13th-minute lead through Jonathan Clauss and had the ball in the net again in the 37th minute, but Seko Fofana‘s effort was ruled out after a VAR check. Kadewere’s equaliser came on the stroke of half-time.