Riyad Mahrez struck twice as Manchester City reached the Champions League final for the first time thanks to a comfortable victory over Paris St Germain at the Etihad Stadium that secured a 4-1 aggregate win.
City will now face the winner of Wednesday's semi-final, second leg between Chelsea and Real Madrid in the 29 May final in Istanbul.
Leading 2-1 from the first leg, City eased their nerves when Algerian winger Mahrez scored in the 11th minute after latching on to a blocked shot from Kevin De Bruyne.
PSG badly missed their injured striker Kylian Mbappe who, suffering a calf injury, was forced to watch the game from the stand as a substitute.
Pep Guardiola's side doubled their lead in the 63rd minute with a classic counter-attack, as Phil Foden burst down the left and, after a quick exchange of passes with De Bruyne, picked out Mahrez at the back post who slotted in from close range.
PSG's Argentine winger Angel Di Maria was sent off in the 69th minute after a clash with Fernandinho after the ball had gone out of play.
The shame for City was that they had no fans in the stadium on such a historic night, but that did not stop plenty of them braving torrential rain to welcome the team to the stadium.
Hundreds lined the street on the approach to the ground and blue flares were lit as the coaches carrying the players made the short journey from the nearby training complex.
With a large police presence there were no obvious signs of trouble but little social distancing was evident.
The Manchester weather also had a surprise in store as the downpour not only continued but turned from rain to hailstones.
There was no danger of the game being called off but ground staff hurriedly had to clear ice from the line markings.
The pitch was a wintry sight but City will have been warmed by the news Kylian Mbappe was only deemed fit enough for a place on the PSG bench due to a calf injury.
That did not prevent PSG making a positive start. Neymar and Di Maria both had early shots blocked before they were wrongly awarded a penalty for handball against Oleksandr Zinchenko.
Referee Bjorn Kuipers overturned his decision after replays showed the ball to have brushed the Ukrainian's shoulder.
After surviving that scare, City took a firm grip on the tie as they broke clear to score after 11 minutes.
Ederson released Zinchenko with a superb ball and the left-back picked out the inrushing Kevin De Bruyne outside the box. The Belgian’s shot was blocked but Mahrez followed up to tuck home the rebound.
PSG did not let their heads drop and turned up the heat with Marquinhos heading against the bar. Di Maria then missed an open goal from 25 yards after Bernardo Silva was dispossessed while Ederson was out of his goal.
Both sides continued to attack in what became a tetchy affair.
John Stones blocked a Neymar shot while Mahrez was denied from close range by Keylor Navas.
Phil Foden forced Navas to save twice more early in the second half although he was flagged offside for one of them.
Neymar burst into the area but Zinchenko produced a fine sliding challenge to deny the Brazilian and Ruben Dias blocked a volley from Ander Herrera.
City snatched another vital goal as they caught PSG on the counter-attack after 63 minutes.
Foden exchanged passes with De Bruyne and sent a low ball into the area for Mahrez to tuck in at the far post.
That proved a hammer blow for PSG, who then lost their cool. Di Maria became the second of their players to be sent off in the tie after clashing with Fernandinho.
PSG became niggly, rash in their challenges and could not muster much further threat as Kuipers issued a flurry of yellow cards.
It was City who had the best of the remaining chances as they closed out the game for a famous win.