PSG were booed at half-time by the Parc des Princes crowd after Toko Ekambi broke in from behind and Kylian Mbappe’s series of mistakes gave Rennes a surprise lead.
Things quickly turned from bad to worse for the lopsided leaders as former PSG forward Kalimuendo converted Lesley Ugochukwu’s cross to further enrage the home fans.
PSG’s four-game winning streak in Ligue 1 ended with a whimper as Rennes held firm and Galtier’s weak side saw their lead at the summit cut to seven points when Marseille visited Reims later on Sunday.
Mbappe endured a miserable first half for PSG, seeing a one-on-one finish for offside on 22 minutes before missing three good chances.
Mbappe, who drilled one left-footed effort just wide, was twice released from behind by measured through balls from Lionel Messi, only for Steve Mandanda to deny him with firm saves.
Mbappe’s errors were punished on the stroke of half-time when Rennes scored against the run of play – Toko Ekambi latched on to a simple ball over the top and fired into the bottom left corner.
PSG found themselves 2-0 up within three minutes of the restart, Kalimuendo allowing Ugochukwu to play down the left after betraying Marco Verratti.
Toko Ekambi and Kalimuendo almost scored braces as Rennes continued to press – denied by a one-on-one save from Gianluigi Donnarumma.
Verratti forced a volley save from Mandanda late on, but that was as close as PSG would get.
PSG player ratings
GK: Gianluigi Donnarumma – 4/10 – Let in two of the four shots on target that he faced and could have done better for the first.
CB: Juan Bernat – 4/10 – Didn’t look comfortable on or off the ball in an unfamiliar role.
CB: Danilo Pereira – 5/10 – Didn’t do too much wrong or right at the back.
CB: El Chadaille Bitshiabu – 6/10 – The 17-year-old looked the best of PSG’s defenders, making some good tackles and clearances.
RWB: Timothee Pembele – 3/10 – Was virtually invisible in the half that he played, having just 12 touches of the ball.
CM: Fabian Ruiz – 4/10 – Did precious little with the ball at his feet before being hauled off.
DM: Marco Verratti – 7/10 – Was PSG’s best player, although that’s a low bar. He dictated things well at the heart of midfield.
CM: Vitinha – 5/10 – Made a few decent passes but was quiet for the vast majority of the game.
LWB: Nuno Mendes – 5/10 – Was decent going forward but often left his side exposed at the back.
ST: Lionel Messi – 6/10 – Was the only PSG player that looked like creating anything, but seemed somewhat disinterested and there was a sense that he never really left second gear. The boos from his own fans can’t have helped – it is starting to seem a somewhat unhappy marriage.
ST: Kylian Mbappe – 2/10 – Missed some good chances and was too selfish at times.
Warren Zaire-Emery (46′ for Pembele) – 5/10
Hugo Ekitike (56′ for Ruiz) – 6/10
Renato Sanches (56′ for Bernat) – 5/10
Christophe Galtier – 2/10 – Hasn’t been helped by injuries, but couldn’t get his side to look dangerous going forward or stable at the back throughout the game.
Rennes player ratings
GK: Steve Mandanda (8); CB: Warmed Omari (6); CB: Christopher Wooh (7); CB: Arthur Theate (7); RWB: Djed Spence (7); CM: Benjamin Bourigeaud (8); CM: Lesley Ugochukwu (7); LWB: Adrien Truffert (6); RW: Desire Doue (7); ST: Arnaud Kalimuendo (7); LW: Karl Toko Ekambi (8)
Substitutes: Birger Meling, Amini Gouiri, Baptiste Santamaria, Hamari Traore, Ibrahim Salah