The Ligue 1 leaders, who were down to 10 men after Achraf Hakimi was dismissed early in the first half, were startled by Lorient's 3-1 triumph at Parc des Princes.
Paris St. Germain, who have now dropped nine games across all leagues in 2023, are still in first place with 75 points after 33 games.
But they could see their Ligue 1 lead cut to five points if Olympique Marseille beat Auxerre later on Sunday. Lorient moved up to 10th.
In the 15th minute, Lorient took the lead thanks to some deft right flank movement that exposed the PSG defensive and allowed Romain Faivre to cross the ball into the box for an open Enzo Le Fee to score.
After Hakimi received his second caution for a late challenge on Darline Yongwa, PSG lost a man five minutes later. Kylian Mbappe then equalised inexplicably after Yvon Mvogo made a costly mistake in goal.
The Swiss keeper recovered the ball and attempted to restart play by rolling it forward, only for Mbappe -- who was walking back right beside him -- to take the ball and score into an empty net.
With a man advantage, though, Lorient took the game to PSG, with Le Fee and Faivre manipulating the strings.
The second goal came when Faivre danced into the box and his deflected cross from the byline fell to Yongwa, who made it 2-1.
PSG pushed and puffed in search of an equaliser, with Sergio Ramos headed over from a Lionel Messi corner, and Mvogo save a Danilo Pereira header with his face.
Bamba Dieng had a late goal ruled out for offside, but he sealed all three points a minute later when he got one-on-one with goalie Gianluigi Donnarumma, who saved the initial attempt before Dieng slammed it home.