Manchester City's Riyad Mahrez (L) celebrates scoring against Paris Saint-Germain
Manchester City reached their first Champions League final as Riyad Mahrez's double sealed a 2-0 win against Paris Saint-Germain in Tuesday's semi-final second leg.
City, 4-1 winners on aggregate, will play Chelsea or Real Madrid in the final in Istanbul.
Here, AFP Sport looks at three things we learned from the Etihad Stadium clash:
Criticised for meddling with Manchester City's tactics with disastrous results in last season's shock Champions League quarter-final defeat against Lyon, Pep Guardiola enjoyed a moment of sweet redemption as his astute game-plan laid the foundations for their historic victory.
With a 2-1 lead to defend from the first leg in Paris, Guardiola needed to come up with the right approach to ensure his team didn't let PSG back into the tie.
Some believed Guardiola's desire to prove he could win the Champions League without Lionel Messi had affected him in the latter stages of the competition in the past as he tinkered with team line-ups unnecessarily.
But this time he struck just the right note, with a counter-attacking approach that set City up to take advantage of PSG's need to chase the game.
It worked to perfection with Riyad Mahrez's opening goal coming after a long pass from Ederson exploited the gaps left by PSG at the back.
"We approach this game like any other game," Guardiola had said ahead of the second leg, but even he knew the 289th match of his City reign was unlike any that had come before.
Guardiola last won the Champions League when he lifted the trophy for the second time in his Barcelona reign in 2011.
He hadn't been to the final since then, with City's Champions League campaigns littered with agonising exits in the Guardiola era.
At last, Guardiola and City can put their chequered European history behind them as they chase a remarkable Premier League, Champions League and League Cup treble.
Ruben Dias has made a superb impact since arriving at Manchester City from Benfica last year and this was the Portugal centre-back's finest moment yet.
After initially failing to fill the void left by Vincent Kompany's exit in 2019, City have finally found a worthy successor for the inspirational Belgian.
Dias was rock solid as PSG fought to get back into the tie, making a series of brave blocks and well-timed interceptions.
Twice, he denied PSG by putting his body on the line without a second thought, but the 23-year-old's tour de force came in the 62nd minute.
Ander Herrera's volley was flying towards goal, but Dias flung himself in the way, taking the ball flush on the face to stop the shot testing City keeper Ederson.
Dias wasn't the only defensive hero for City and when Oleksandr Zinchenko made a last-ditch block to deny Neymar inside the City area, John Stones hugged the left-back with unbridled joy -- a celebration that set the stage for the party to come at the final whistle.
The glum look on Kylian Mbappe's face as he sat huddled on the PSG bench encapsulated a miserable evening for the France star and his team.
Mbappe wasn't fit to start after suffering a calf injury and he remained an unused substitute as PSG's final hopes faded away.
Brazil star Neymar had shouldered the burden when Mbappe was absent in the past, with PSG winning all five of their previous games under Mauricio Pochettino without the 22-year-old.
But Neymar was hounded into submission by City's tenacious defence and Mauro Icardi, starting in Mbappe's place, was unable to replicate the threat posed by the World Cup-winning striker, who has 37 goals in 43 appearances this season.
PSG had scored three at Manchester United, four at Barcelona and three at Bayern Munich in the Champions League this season.
But five of those 10 goals came from Mbappe and his absence made it impossible for PSG to overturn the first-leg deficit.