A Riyad Mahrez brace gave Manchester City a famous 2-0 victory over Paris Saint Germain on Tuesday night, giving the Cityzens' a 4-1 aggregate win and sending them to their first ever Champions League final.
The first half saw chances come and go for both sides and, after the referee's decision to award a penalty for handball against Oleksandr Zinchenko was overturned by VAR, it was City who broke the deadlock. Kevin De Bruyne's effort from a Zinchenko cut-back was well blocked, only for Mahrez to steam in and clinically convert the rebound on 11 minutes.
PSG threw nearly everything at their opponents, but the closest they came to levelling the scoreline before half-time was through Marquinhos, whose brilliant header from Angel Di Maria's clipped cross could only hit the bar in the 17th minute.
But Pep Guardiola's men took control after the break and managed to double their lead on 64 minutes. De Bruyne and Phil Foden combined wonderfully down the left, before the England international laid the ball on a plate for Mahrez to secure a famous brace.
Matters were made even harder for the visitors in the 70th minute, when Di Maria was shown a straight red card for a petulant, stupid kick stamp on Fernandinho off the ball.
The ten men of PSG couldn't really trouble City in the latter stages, and Guardiola's men comfortably saw out the 2-0 win to send them through to the Champions League final, 4-1 on aggregate.
Now, let's get to the player ratings.
MANCHESTER CITY PLAYER RATINGS
1. Goalkeeper & defenders
Ederson (GK) - 7/10 - Uncharacteristically looked a tad dodgy with his distribution overall, but played one breathtaking ball to Zinchenko in the build-up to the first goal.
Kyle Walker (RB) - 8/10 - Not too much to offer going forward but was excellent defensively, making nine ball recoveries and marshalling PSG's forwards when they surged forward to perfection.
John Stones (CB) - 9/10 - A rock at the heart of defence, whose physicality proved decisive in the battle. Made four clearances throughout, and was crucial in containing the aerial threat of Marquinhos and co from set pieces.
Ruben Dias (CB) - 9/10 - The organisational voice at the back, commanding his colleagues to maintain the order. Stoic in his defending, using any part of his body to keep PSG out. A true leader.
Oleksandr Zinchenko (LB) - 8/10 - Stayed level-headed, even after the scare of having a penalty wrongfully awarded against him. Defended with the utmost composure and stayed firm all game. Provided brilliant support up top, proving integral to the opener.
Fernandinho (DM) - 9/10 - Influential, commanding and absolutely phenomenal. Kept things compact and tight throughout, making 12 interventions and frustrating the likes of Neymar brilliantly - somehow managing not to get booked. What a way to celebrate turning 36; happy birthday, captain!
Bernardo Silva (CM) - 7/10 - Showed class with some lovely touches to aid his side's transition from back to front, but was largely overshadowed by some outstanding performances around him.
Ilkay Gundogan (CM) - 7/10 - Was the pivot between defence and attack for the most part and carried the ball out very well, evading the press to move his side upfield.
Riyad Mahrez (RW) - 10/10 - Once again worked tirelessly defensively, tracking back to maintain a rigid defensive shape without fail. Stole the show in attack, scoring a brace to put City into their first Champions League final. A night he, and Manchester City, will never forget.
Kevin De Bruyne (ST) - 8/10 - Astounding work rate from the outset. Pressed constantly and denied his opposition the chance to build from the back effectively and, up top, he ran into open space throughout to provide his side with an outlet and was crucial to both goals.
Phil Foden (LW) - 8/10 - Had some 'Messi-esque' moments, looking dangerously creative and unstoppable in full flight, assisting brilliantly for Mahrez's second. So unlucky not to score himself, hitting the upright late on.
Gabriel Jesus (ST) - 6/10
Raheem Sterling (LW) - 6/10
Sergio Aguero (ST) - N/A
PSG PLAYER RATINGS
5. Goalkeeper & defenders
Keylor Navas (GK) - 5/10 - A couple of decent stops in the second half, but couldn't stop either goal as his side crashed out.
Alessandro Florenzi (RB) - 4/10 - Gave Zinchenko the freedom of Manchester in the build-up to the opener, and never really looked like threatening the Ukrainian as he got forward.
Marquinhos (CB) - 6/10 - Defended fairly well, making four tackles, and was desperately unlucky not to equalise in the first half, hitting the bar.
Presnel Kimpembe (CB) - 7/10 - Demonstrated brilliant positioning once again, constantly proving to be essential on the cover, registering nine interventions.
Abdou Diallo (LB) - 5/10 - Got forward to good effect, giving his side width on the left flank. Put in some wicked deliveries and was unlucky not to register an assist. Left wanting at the other end, though, as he was nowhere to be seen for the opener.
Marco Verratti (CM) - 7/10 - Was up and down the field all game, providing an option to teammates throughout. Drove forward well and latched onto loose balls as they came out of City's defence.
Ander Herrera (CM) - 4/10 - Looked flustered against the press and wasn't clinical enough when spreading the ball out from deep. Was (unnecessarily) hot-headed from the start and got hooked off on the hour mark.
Leandro Paredes (CM) - 6/10 - Once again tackled tough and played nicely to link defence to attack, but the game passed him by a bit as he failed to put his mark on proceedings.
Angel Di Maria (RW) - 4/10 - Floated around and sporadically found himself in really threatening areas to make three key passes. But an inexcusable red card spoiled his night.
Mauro Icardi (ST) - 2/10 - Completely absent and couldn't create space or worry the City back line at all.
Neymar (LW) - 6/10 - Picked the ball up in space and moved it forward beautifully at times, but got frustrated with the excellence of City's organisation and couldn't impact proceedings all that much.
Moise Kean (ST) - 5/10
Julian Draxler (CM) - 5/10
Danilo (CM) - 6/10
Colin Dagba (RB) - 6/10
Mitchel Bakker (LB) - N/A