Manchester City ended their wait for a first Champions League final appearance as two more Riyad Mahrez goals saw off 10-man Paris Saint-Germain 2-0 on Wednesday (AEST)
Mahrez hit the decisive free-kick in a 2-1 semi-final first-leg victory in Paris and strikes in either half in the return fixture added to that advantage.
Those goals and a dogged defensive effort – after a pre-match hail storm that left a sodden, awkward pitch – were enough to finally take Pep Guardiola's men through to Europe's showpiece match with a 4-1 aggregate triumph.
PSG played their part in another gripping affair, but Kylian Mbappe was only fit enough to make the bench and their frustration resulted in a red card for Angel Di Maria when he kicked out at Fernandinho.
The tricky conditions contributed to the chaos in an eventful opening that saw Oleksandr Zinchenko initially penalised for handball in the City area, only for a VAR review to confirm the ball had instead bounced away off his shoulder.
The indignant full-back was fittingly then involved in the opener. He cut a cross back to Kevin De Bruyne, whose deflected shot skidded to Mahrez for a first-time finish through Keylor Navas' legs from a tight angle.
First-leg scorer Marquinhos climbed highest to head against the City crossbar, before Angel Di Maria curled wide of an open goal soon after with Ederson stranded.
The game still did not settle, but there was at least a lull in the goalmouth action until a pair of Navas saves either side of half-time and then a clinical counter that killed the tie.
Foden offloaded the ball to De Bruyne and took his return pass on the left to send in a low centre that found Mahrez all alone to slam in again.
As in the game in Paris, the Ligue 1 side lost their discipline and Di Maria's dismissal for a stamp on Fernandinho might not have been the only red card.
City sought to punish the visitors further and Foden drilled against the foot of the post, before late changes ensured there would be no unwanted suspensions ahead of a trip to Istanbul.
What does it mean? Grit takes Guardiola's side through
City might be dominant again in the domestic game, but Guardiola has changed the way they play this season. His side score fewer but also concede fewer and have discovered a defensive resiliency.
Although PSG had the better of the possession for much of the match, City always looked in control and defended as a team. Every starting outfield player contributed a clearance, while eight made at least one tackle and six had a block.
A similarly disciplined final display against Chelsea or Real Madrid will give City every chance of a first European crown.
Dias delights in leading role
If any one player epitomised City's courage – as he has all season – it was Ruben Dias. The centre-back made a game-high three blocks, each braver than the last, and joined his defensive colleagues in celebrating every critical contribution.
MIA: Mauro Icardi anonymous
PSG were always likely to miss Mbappe, and Mauro Icardi is far from a like-for-like replacement, but Mauricio Pochettino needed much, much more from his number nine.
The striker had only 16 touches in the 62 minutes he was on the pitch, with his average position near the halfway line. From 14 efforts, PSG did not land a single attempt on target.
This is already a week to remember for City, and victory over Chelsea on Saturday would clinch their latest Premier League title. PSG have a fight on their hands to retain the Ligue 1 crown and visit Rennes on Sunday.