Monaco came from two goals down to end Paris St-Germain’s eight-match winning streak in Ligue 1, moving second with a stunning victory.
PSG’s Kylian Mbappe scored two first-half goals on his return from injury.
But Monaco came out transformed after the break, as Kevin Volland scored twice past Keylor Navas in 14 second-half minutes.
Cesc Fabregas completed the comeback after Abdou Diallo gave away a penalty and saw red six minutes from time.
PSG were dominant in the first half, scoring twice and having a further two goals disallowed as Moise Kean and Mbappe were both denied by the offside flag.
But Fabregas’ half-time arrival completely altered the dynamic of the game, and PSG struggled to cope with the Spaniard’s accomplished passing.
They had conceded just one goal in eight league games prior to the game, but were not at their best against the 2016-17 Ligue 1 winners despite the return of attacking trio Mbappe, Neymar and Kean.
Monaco, without captain Wissam Ben Yedder after a positive coronavirus test, fielded a young team, with eight players in the starting XI under the age of 23.
- 32Badiashile Mukinayi
- 2Ballo-ToureSubstituted forCaio Henriqueat 45′minutes
- 11Gelson MartinsSubstituted forMatazoat 90+4′minutes
- 22FofanaBooked at 35mins
- 8TchouameniSubstituted forMorris Luísat 90+1′minutes
- 37DiopSubstituted forJoveticat 90+2′minutes
- 13GeubbelsSubstituted forFàbregasat 45′minutesBooked at 87mins
- 12Caio Henrique
- 35Morris Luís
- 22DialloBooked at 83mins
- 3KimpembeBooked at 88mins
- 20KurzawaSubstituted forBakkerat 68′minutes
- 11Di MaríaSubstituted forNeymarat 60′minutes
- 15DaniloBooked at 20minsSubstituted forParedesat 68′minutes
- 12RafinhaSubstituted forFlorenziat 85′minutes
- 7MbappéSubstituted forRuiz-Atilat 68′minutesBooked at 80mins
Match ends, Monaco 3, Paris Saint Germain 2.
Second Half ends, Monaco 3, Paris Saint Germain 2.
Hand ball by Neymar (Paris Saint Germain).
Substitution, Monaco. Eliot Matazo replaces Gelson Martins.
Benoit Badiashile Mukinayi (Monaco) wins a free kick in the defensive half.
Foul by Kays Ruiz-Atil (Paris Saint Germain).
Substitution, Monaco. Stevan Jovetic replaces Sofiane Diop.
Cesc Fàbregas (Monaco) wins a free kick in the attacking half.
Foul by Leandro Paredes (Paris Saint Germain).
Substitution, Monaco. Florentino Luís replaces Aurelien Tchouameni because of an injury.
Presnel Kimpembe (Paris Saint Germain) is shown the yellow card for a bad foul.
Gelson Martins (Monaco) wins a free kick in the attacking half.
Foul by Presnel Kimpembe (Paris Saint Germain).
Cesc Fàbregas (Monaco) is shown the yellow card for a bad foul.
Foul by Cesc Fàbregas (Monaco).
Colin Dagba (Paris Saint Germain) wins a free kick on the left wing.
Substitution, Paris Saint Germain. Alessandro Florenzi replaces Rafinha.
Goal! Monaco 3, Paris Saint Germain 2. Cesc Fàbregas (Monaco) converts the penalty with a right footed shot to the top left corner.
Abdou Diallo (Paris Saint Germain) is shown the red card.
VAR Decision: Card upgraded Abdou Diallo (Paris Saint Germain).