THIS was not just a semi-final victory for Pep Guardiola’s Manchester City.
It was a night when a seven-year reign reached its peak, when perfection was glimpsed and when the impossible dream of the Treble became an odds-on probability.
For 45 minutes, as City’s voracious appetite for winning the football matched their supreme mastery of it, Guardiola must have felt as if he had died and gone to Heaven.
It was as if Utopia was a tram stop on the Ashton-under-Lyne branch of Manchester’s public transport system.
Bernardo Silva scored twice but had it not been for Real’s goalkeeping illusionist Thibaut Courtois, City would have scored several more.
After a brief Real rally, Eder Militao’s own goal and Julian Alvarez’s injury-time strike ensured City will head into their second Champions League Final, against Inter Milan, as one of the hottest favourites in the competition’s history.
It will now take something truly staggering to prevent City from parading precious silver in three of the next four weekends.
The Premier League trophy will surely be first, after Sunday’s match against Chelsea, then the FA Cup in a Manchester derby at Wembley on June 3 and Old Big Ears itself in Istanbul’s Ataturk Stadium against Inter Milan a week later.
This was a night of nights for Guardiola, his players and a delirious Etihad faithful.
Most read in Champions League
This was supposed to have been City’s toughest obstacle on the road to the Treble.
But when state-run wealth hires the greatest mind in football and supremely expensive footballers become even better still, this is what you get.
The team bus has been roared in, everybody was filming themselves waving blue flags and people old enough to remember Wycombe Wanderers doing a league double over City were as eager as kids on Christmas morning.
The sense of occasion was palpable but so, too, the sense of trepidation. Didn’t Real always find a way in this competition?
They had defeated City twice in Champions League semi-finals, including last year’s thriller, and Ancelotti had ‘a special power for staying alive’.
Despite an effective man-marking job on Haaland in the Bernabeu, Antonio Rudiger dropped to the bench in the only change to either starting line-up from the first leg.
Militao, banned last week, was seemingly superglued to Haaland like a Just Stop Oil protestor.
But City began as they had in Spain, pinning Real back, passing, probing, possession stats off the scale.
Rodri shot wide across goal, John Stones fizzed one past the post and then Grealish – cocksure and cunning – clipped a cross into Haaland whose header looked conclusive until Courtois saved with his hip.
Not satisfied with that, Courtois – man of the match in last year’s final victory over Liverpool – denied Haaland with a ridiculous save.
The Belgian was moving to his left when Haaland stuck his nut on a De Bruyne centre but, as if a doctor had struck his right arm with a hammer, he flexed his right arm and kept it out .
Two minutes later, though, Courtois was beaten at his near post – not so much a goalkeeping blunder but a sweet piece of deception from Bernardo.
Real allowed City too much space. De Bruyne slipped through the Portuguese, who have Courtois the eyes and lashed it home.
City were rampant, 80 per cent possession, almost 100 per cent territory.
They were so good, Real Madrid looked like a lower-league side here to keep the score down in a domestic cup tie.
In a staggering twist, though, Real got hold of the ball. Vinicius was released and just as he entered the penalty area, Kyle Walker nipped back and robbed him.
Then Toni Kroos, 30 yards out, leathered one against the crossbar.
The resistance was short-lived. City swept forward and Grealish fed Ilkay Gundogan, whose shot cannoned off Militao and looped up for Bernardo to nod home.
Bernardo, the shortest man in the City side, had netted a header against Bayern Munich here in the quarter-finals.
The situation was so perilous that Ancelotti’s face fell into a look of mild puzzlement. By half-time, City had out-shot his team by a margin of 12-1.
Early in the second half, though, De Bruyne and Guardiola were bawling each other out and Ruben Dias was hauling down Vinicius for a David Alaba free-kick which was tipped over by Ederson, finally in gainful employment.
City were ceding possession, Guardiola spending lengthy spells on his knees, as if in prayer.
He had lived through the nightmare of City tossing away a two-goal lead against Real before and he sensed a recurrence.
Guardiola hadn’t used a single sub last week and he was reluctant to do so again, despite City looking leggy from their first-half.
Haaland should have wrapped it up from a sweet Gundogan back-heel but his shot crashed against Courtois’ knee and up onto the bar.
City did not have to wait long, though.
Grealish – elusive, Elvis-hipped – was having the dinner kicked out of him. When Eduardo Camavinga hacked him down, De Bruyne swung in a free kick, which brushed off Akanji and struck Militao and that was that.
As the clock struck 90, Phil Foden fed fellow sub Julian Alvarez with a no-look pass and the Argentine swept through for the fourth.
It did not flatter City one little bit.