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.
City avenged September's 2-0 defeat by PSG
For 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.
Mauricio Pochettino's Tottenham beat Manchester City en route to the Champions League final in 2019
The 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.