Man City were superb as they hammered Real Madrid 4-0 in the second leg and 5-1 on aggregate to book their place in the Champions League final.
Bernardo Silva netted twice before Eder Militao turned the ball into his own net. Julian Alvarez added a fourth late on as City claimed a huge 4-0 win at the Etihad to storm into next month’s Istanbul showpiece 5-1 on aggregate.
Man City’s win was just as comprehensive as the scoreline suggests. Real Madrid were simply unable to live with Pep Guardiola’s mesmeric side.
Toni Kroos did hit the woodwork at 1-0 but it was a rare bright moment from a Real team that was simply overwhelmed.
It was sweet revenge for City after defeat at the same stage last season and the upcoming final against Inter Milan could now be the crowning glory of a magnificent treble.
The hosts made a blistering start and soon established a dominance that lasted for almost the entirety of the game.
They controlled possession for large spells early on in the first leg too but this time they were more dynamic and, unlike last week in the Bernabeu, Madrid looked far from comfortable.
Kyle Walker fired a warning shot over the bar after three minutes before Erling Haaland rounded Thibaut Courtois but could find nobody in front of goal.
Rodri beat two defenders to shoot across goal and John Stones drove wide before Courtois produced two superb saves to keep out Haaland headers.
It was no surprise when the opener came as Kevin De Bruyne slipped in Silva and the Portuguese flicked a left-foot shot inside the near post from eight yards.
In the preceding 23 minutes, Real had hardly touched the ball, let alone got out of their half, and their struggles continued as Haaland flashed another effort wide.
Eventually the visitors did enjoy some possession but Walker comfortably dealt with a Vinicius Junior break.
Kroos stunned the raucous Etihad crowd into silence when he thumped a long-range shot against the bar, almost completely out of the blue, but City soon reasserted themselves.
Jack Grealish jinked into the area and fed Ilkay Gundogan and, although his shot was blocked by Militao, it looped up nicely for Silva to plant home a header and double the lead.
The attacks continued until the interval with Manuel Akanji having an effort blocked and Real left the field at the break looking completely flat.
Ederson was tested early in the second half when he palmed over a David Alaba free-kick but City continued to control the majority of possession.
As Real began to get stretched, Haaland was inches away from adding a third when his shot bounced up off Courtois’ leg and struck the bar.
Real were beaten soon after, however, as De Bruyne swung in a free-kick from the left and Akanji’s glancing header was deflected past Courtois by Militao.
Substitute Dani Ceballos forced a late save from Ederson as Real searched for a consolation but Alvarez wrapped up a memorable victory in stoppage time with a neat finish.