Kylian Mbappe fluffed a golden chance on his 200th Ligue 1 appearance as leaders Paris Saint-Germain stumbled to a 1-0 defeat against bogey team Rennes.
Hamari Traore stunned the capital city giants by breaking the deadlock in the 65th minute with a clinical left-footed strike, his first league goal of the season.
Substitute Mbappe squandered a clear opportunity for a leveller after being played in behind the Rennes defence soon afterwards, sweeping a powerful shot over the bar when he only had Steve Mandanda to beat.
PSG pushed for a leveller, but Rennes had their number once again at Roazhon Park, which has been the way of things in recent seasons.
The visitors' threat was stifled in the first half, and the best chance fell to Rennes striker Arnaud Kalimuendo, whose volley from 10 yards was blocked by Gianluigi Donnarumma. The Italian also later saved well from Amine Gouiri.
Lionel Messi was not at his sharpest, sending one shot from 20 yards soaring high over the crossbar and failing to hit the target with any of his three goal attempts before the break.
Neymar was similarly subdued, but PSG had a weapon up their sleeve with Mbappe among their substitutes.
Danilo Pereira looked to have squandered a big chance when Mandanda parried his close-range header early in the second half, but the defender, making his 100th PSG appearance, was one of three players offside in the build-up.
Coach Christophe Galtier sent on Mbappe and Achraf Hakimi in the 55th minute, as Hugo Ekitike and Nordi Mukiele made way. However, the opening goal went to Rennes, with captain Traore lashing a stabbed cutback from Adrien Truffert low and past the reaches of Donnarumma from 12 yards.
Mbappe then missed woefully after connecting with a long pass from Messi, and try as they might, the visitors could not find a way back to level terms.
What does it mean? It's happened again
Rennes have now had more wins against PSG in Ligue 1 during the Paris club's Qatar Sports Investments ownership era than any other side has managed. This was a sixth such win, taking them one ahead of Lyon and Monaco.
The Breton club are unbeaten in their last four home league games against the Parisians (W3 D1). They have also won nine league games in a row at home, a new club record in the top flight.
PSG's once-commanding lead at the summit is down to three points, which will bring unwanted pressure on Galtier in his first season at the helm.
This was also Mbappe's 300th club game, all competitions included, but it was not one he or PSG would want to remember.
Shot-shy PSG come unstuck
PSG attempted only eight shots in this game, the fewest they have managed in a Ligue 1 game this season. Only one hit the target, which summed up their night. Rennes also had eight shots, but six went on target. Ekitike was ineffective, having just seven touches in the first half and 10 in total before being substituted, while Neymar and Messi were far from their best. Neymar played the full game but did not manage one shot, while Mbappe went OTT, much to the relief of Rennes, with his one attempt.
Rennes in pursuit
Rennes are sitting fifth in the table, with their stunning home form a big factor, and they are level on points with fourth-placed Monaco. Truffert's assist was his fifth of the season in the league, with no Rennes player having managed more.
Key Opta Facts:
- PSG have lost two of their last three Ligue 1 games (W1), as many as in their previous 29 (W22 D5).
- Rennes have scored in each of their last 18 Ligue 1 games (36 goals overall), their longest run in the top-flight in a single campaign since August-November 1961 (19).
- The last three Ligue 1 games where PSG have registered one shot on target or fewer have come against Rennes: in October 2021 (0), In February 2022 (1) and here (1).
- Bruno Genesio is the manager who has won the most games (5) in Ligue 1 against PSG in the QSI era: three wins with Lyon and two wins with Rennes.
PSG have a friendly against a Riyadh Season Team in Saudi Arabia on Thursday, which could see them face Cristiano Ronaldo, before tackling minnows Pays de Cassel in the Coupe de France last-32 stage the following Monday. Rennes have a cup trip to Marseille on Friday.