Rennes came from behind to stun Ligue 1 champions Paris St Germain 2-1 at Roazhon Park on Sunday evening.
Edinson Cavani had given the visitors the lead when he capitalised on a stray pass in the penalty area from home captain Damien Da Silva.
But Rennes, who won their opener at Montpellier last weekend, were level just before half-time through a fine shot on the turn by M’Baye Niang, and Romain Del Castillo’s header completed the turnaround four minutes after the interval.
The capital club – again without Brazil forward Neymar, whose future remains uncertain – created few clear-cut chances in the second half as they slumped to an early first defeat of the new campaign.
Thomas Tuchel’s side had already avenged last season’s Coupe de France final loss to Rennes with victory in the Trophee des Champions, which was held in China earlier this month, and headed to Brittany having opened the new league campaign with a 3-0 home win over Nimes and seeking an eighth straight win at Roazhon Park.
PSG started brightly and went close to breaking the deadlock in the 14th minute when Cavani’s header from a free-kick by Angel Di Maria hit the post.
They were gifted the opening goal in the 37th minute when Da Silva played a pass back across the face of goal towards his goalkeeper, but Cavani reacted quickest to slide the ball into the empty net.
Kylian Mbappe then broke clear to fire into the side-netting as PSG looked to extend their lead.
Rennes, though, levelled just before half-time with a fine individual effort from Niang.
The Sengal forward collected a low ball in from Hamari Traore and spun his marker before drilling his shot into the far corner past Alphonse Areola.
The hosts made a fast start to the second period and went in front in the 49th minute.
Teenager Eduardo Camavinga, who turns 17 in November, floated over a perfectly weighted cross into the PSG penalty area, where Del Castillo leapt to glance home a downward header.
Niang found himself with a sight of goal again as the hour mark approached, but this time Areola made a smart stop.
It was almost 3-1 in the 63rd minute when Jeremy Morel’s flicked volley from a corner came back off the inside of the far post.
PSG tried to mount a response on the counter-attack as Julian Draxler darted into the Rennes penalty area, but Romain Salin was out quickly to save at the German’s feet.
Mbappe bent a 25-yard effort just wide 20 minutes from time and then saw a floated cross tipped over.
Cavani picked up a late caution for dissent, with PSG unable to fashion an equaliser despite pressing forward during four minutes of added time.