Manchester City came back from behind to beat Paris St-Germain and secure qualification for the Champions League last 16 - doing so as Group A winners.
City's outstanding display reaped the reward it deserved, as they showed character as well as class after Kylian Mbappe swept PSG into a 50th-minute lead.
PSG manager Mauricio Pochettino, heavily linked with Manchester United following Ole Gunnar Solskjaer's sacking, was left disappointed as City hit back in style to turn the game around.
Raheem Sterling's recent good run continued as he turned home Kyle Walker's far post touch to equalise after 63 minutes. Then substitute Gabriel Jesus was the beneficiary of an exquisite lay-off from Bernardo Silva to beat PSG keeper Kaylor Navas from close range 13 minutes later.
PSG's superstar trio of Mbappe, Lionel Messi and Neymar were a sporadic threat but City carried the greater danger and this was a well-merited victory, putting them into the last 16 before they travel to face RB Leipzig for their final Group A game, which will be played behind closed doors.
Man City overpower PSG
City avenged September's 2-0 defeat by PSGFor all PSG's attacking riches, it was Manchester City who carried the more concerted threat - with the only concern initially that they could not cash in on their domination.
Pep Guardiola's side were on the front foot from the first whistle and it required Presnel Kimpembe's header to deny Rodri, before Achraf Hakimi diverted a shot from Riyad Mahrez over the top.
City almost paid the price when John Stones lost possession and Mbappe shot over but City were calm, measured and always looked a more organised unit than their illustrious opponents.
They were put to the test when Mbappe put PSG ahead against the run of play but City then struck the perfect balance between chasing the game and keeping the door locked at the back.
Sterling's resurgence continued with another goal and an energetic display while Jesus answered the regular questions about City not signing a striker with a predatory finish.
City then closed out the game with few alarms to ensure they will go into the draw for the knockout stage as group winners, always an advantage, and with the opportunity to rest players in that final group game behind closed doors in Leipzig with their Champions League job done.
It was the sort of performance City have been producing in the Champions League in recent seasons, as PSG discovered in last season's semi-final - now the task is to somehow find a way to make those successful steps through the next phase and fill that gap in their trophy cabinet.
Pochettino's bad night in Manchester
Mauricio Pochettino's Tottenham beat Manchester City en route to the Champions League final in 2019The spotlight has been fixed firmly on Pochettino since his arrival in Manchester for this Champions League tie, coinciding with him becoming the heavy favourite to be appointed as the next permanent Manchester United manager.
He negotiated the inevitable pre-match questions with aplomb but will have returned to Paris disappointed after an average display from his side.
They can boast that brilliant attacking trio - but this seems to come at the expense of PSG resembling a Pochettino side, one full of urgency, intensity and pressing.
Messi showed some of the old touches while Mbappe demonstrated his blistering pace and eye for goal but Neymar was disappointing, too easily shrugged off the ball and missing a great chance to restore PSG's lead.
PSG seem like a mix-and-match group, in this tournament at least, with Pochettino struggling to achieve unity of purpose.
No-one could ever write off a team with the world-class talent PSG possess but they need to show more. There is no doubt Manchester United will be watching with interest to see if Pochettino can really put his stamp on this team, where he has to balance the need to accommodate three magnificent players with the desire to play his trademark style.
PSG will be a danger to anyone once the knockout games get under way but they were second best here and no-one can begrudge City their win.
Player of the match
Bernardo SilvaBernardo Silva
Paris Saint Germain
Squad number30Player nameMessi
Squad number7Player nameMbappé
Squad number5Player nameMarquinhos
Squad number2Player nameHakimi
Squad number3Player nameKimpembe
Squad number1Player nameNavas
Squad number10Player nameNeymar
Squad number27Player nameGueye
Squad number25Player nameNuno Mendes
Squad number21Player nameHerrera
Squad number8Player nameParedes
Squad number15Player nameDanilo Pereira
Squad number11Player nameDi María
Squad number24Player nameKehrer
Line-ups
Man City
Formation 4-3-3
31Ederson
2Walker5Stones3Rúben Dias27Cancelo
8Gündogan16Rodri11Zinchenko
26Mahrez20Bernardo Silva7Sterling
31Ederson2Walker5Stones3Rúben Dias27CanceloBooked at 80mins8Gündogan16RodriBooked at 55mins11ZinchenkoSubstituted forGabriel Jesusat 54'minutesBooked at 90mins26Mahrez20Bernardo Silva7SterlingSubstitutes
6Aké9Gabriel Jesus13Steffen14Laporte25Fernandinho33Carson80Palmer87McAteePSG
Formation 4-3-3
1Navas
2Hakimi5Marquinhos3Kimpembe25Tavares Mendes
21Herrera8Paredes27Gueye
30Messi7Mbappé10Neymar
1Navas2Hakimi5Marquinhos3Kimpembe25Tavares MendesSubstituted forKehrerat 67'minutes21HerreraSubstituted forDaniloat 61'minutes8Paredes27GueyeSubstituted forDi Maríaat 67'minutes30Messi7Mbappé10NeymarSubstitutes
4Ramos6Verratti9Icardi11Di María15Danilo17Dagba18Wijnaldum22Diallo24Kehrer28Ebimbe40Franchi50G DonnarummaReferee:Daniele OrsatoAttendance:52,030Live Text
Match ends, Manchester City 2, Paris Saint Germain 1.
Second Half ends, Manchester City 2, Paris Saint Germain 1.
Gabriel Jesus (Manchester City) is shown the yellow card for a bad foul.
Foul by Gabriel Jesus (Manchester City).
Neymar (Paris Saint Germain) wins a free kick in the attacking half.
Foul by Gabriel Jesus (Manchester City).
Leandro Paredes (Paris Saint Germain) wins a free kick in the defensive half.
Riyad Mahrez (Manchester City) wins a free kick in the attacking half.
Foul by Presnel Kimpembe (Paris Saint Germain).
Riyad Mahrez (Manchester City) wins a free kick in the defensive half.
Foul by Presnel Kimpembe (Paris Saint Germain).
João Cancelo (Manchester City) is shown the yellow card for a bad foul.
Foul by João Cancelo (Manchester City).
Lionel Messi (Paris Saint Germain) wins a free kick in the defensive half.
Riyad Mahrez (Manchester City) wins a free kick in the defensive half.
Foul by Leandro Paredes (Paris Saint Germain).
Goal! Manchester City 2, Paris Saint Germain 1. Gabriel Jesus (Manchester City) right footed shot from the centre of the box to the centre of the goal. Assisted by Bernardo Silva.
Attempt missed. Ángel Di María (Paris Saint Germain) left footed shot from outside the box is high and wide to the left. Assisted by Lionel Messi.
Attempt missed. Neymar (Paris Saint Germain) left footed shot from the centre of the box is close, but misses to the left. Assisted by Ángel Di María.
Offside, Manchester City. Bernardo Silva tries a through ball, but Gabriel Jesus is caught offside.