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.