PSG saw their lead at the top of the Ligue 1 standings slashed in half. They had looked to have taken a stranglehold on the title race after a run of four successive victories saw them open a six-point gap at the summit going into this weekend's fixtures.
But with new signing David Beckham's debut still on hold while he gains match fitness and the in-form Lucas Moura injured, Carlo Ancelotti's men came unstuck against relegation-battling Sochaux at the Stade Bonal.
Alex gave the league leaders a 29th-minute lead but Sochaux hit back soon after to level through Sebastian Roudet before Giovanni Sio put the home side ahead in the 54th minute.
An enthralling encounter looked to have swung back PSG's way when they equalised through Blaise Matuidi 14 minutes from time but, rather than the big-spending Parisians going on and finding a winner, it was Sochaux who snatched a deserved victory thanks to sub Cedric Bakambu's goal six minutes from time.
That defeat meant PSG's advantage at the top of the table had been cut back to three points by Lyon, who saw off Bordeaux earlier in the day.
Two goals by Clement Grenier, one from the penalty spot, and further strikes from Alexandre Lacazette and Gueida Fofana earned Lyon their first four-goal victory at the Stade Chaban-Delmas since 1977.
In Sunday's other match, fifth-placed St Etienne were held to a 1-1 draw at struggling Reims. St Etienne took a 10th-minute lead through Pierre-Emerick Aubameyang but Gaetan Courtet salvaged a point for Reims with an equaliser 14 minutes from time.