Mauricio Pochettino's side had won eight out of eight in the league prior to its trip to Roazhon Park and was 15 without defeat in the competition since early April.
But the visitors were made to pay for poor misses from Neymar and Kylian Mbappe as Gaetan Laborde and Flavien Tait struck for Rennes either side of half-time.
Mbappe had a goal chalked off for offside and Lionel Messi went close from a free-kick, having earlier struck the crossbar from one, but PSG could not find a response in a rare setback for Pochettino.
Travel problems forced PSG's players to make their way to Rennes via road late on Saturday and that appeared to show as they made a sluggish start to the contest.
Rennes failed to truly test Gianluigi Donnarumma during their spell on top, though, and PSG soon got on the front foot as big chances fell the way of Neymar and Mbappe.
But Neymar sliced a volley over from six yards when unmarked and Mbappe scuffed a shot off target with only Alfred Gomis to beat less than two minutes later.
Messi then hit the crossbar from a free-kick and those near misses proved costly when Kamaldeen Sulemana's cross was turned in by Laborde, though Nuno Mendes may have got the final touch.
The home side's second arrived just 18 seconds after half-time as Laborde pulled the ball back for Tait to tuck past Donnarumma when left in plenty of space.
That goal was allowed to stand after a lengthy video assistant referee (VAR) check and PSG was undone by the technology 21 minutes from time when Mbappe's fine finish was ruled out for offside.
VAR was also required late on to overturn a penalty awarded for an Achraf Hakimi challenge on Laborde, though Rennes comfortably saw out the remainder of the contest.