Eder Militao’s own goal and Julian Alvarez’s strike in stoppage time rounded off a memorable night for Pep Guardiola’s men as they moved to within three wins of matching Manchester United’s treble in 1998/99.
A fifth Premier League title in six seasons appears a formality with City needing just three points from their final three games, while United await in the FA Cup final on June 3.
But it is the first-ever Champions League that City crave the most and they will be strong favourites to finally conquer Europe against Inter Milan in Istanbul on June 10.
Seven years into Guardiola’s reign as City boss, the home fans were sent into seventh heaven by the quality of a display that rivalled the former Barcelona boss’ Champions League final wins in charge of the Catalan giants in 2009 and 2011.
Madrid dashed City’s dreams at this stage last season with a remarkable comeback from two goals down in the dying seconds of the second leg at the Santiago Bernabeu.
But Carlo Ancelotti’s men this time had no answer to City’s excellence.
Were it not for Madrid goalkeeper Thibaut Courtois, the defending champions would have been on the end of a hiding before half-time.
The giant Belgian needed all of his two-metre (6ft 7in) frame to claw Erling Haaland’s header around the post.
Haaland had already been denied his 53rd goal of the season by Courtois with another downward header.
Rodri, John Stones and Jack Grealish also saw potshots fly off target from the edge of the area, but Madrid’s luck finally ran out on 23 minutes.
Kevin De Bruyne unpicked the lock as his pass found Silva inside the area, and he smashed high past Courtois’ left hand.
The visitors had barely registered a touch inside the City half for the opening half-hour but were inches away from an equaliser 10 minutes before half-time when a piledriver from Toni Kroos rattled the crossbar.
Just as Madrid were beginning to settle, City grabbed the second goal their first-half dominance deserved.
The in-form Ilkay Gundogan was denied a fifth goal in May by Eder Militao’s block, but the ball looped up kindly for Silva to head into an unguarded net.
Haaland fired another blistering effort just wide and Courtois denied Silva an unlikely hat-trick as City attacks continued in waves before the break.
But they had to show a different side to their game early in the second half to weather Madrid’s reaction and ensure there was no repeat of last season’s late drama between the sides.
The closest Real came to a lifeline was a dipping free-kick from David Alaba that Ederson tipped over.
At the other end, Courtois continued to win his personal battle with Haaland by turning the Norwegian’s shot onto the bar when one-on-one.
But City won the war to move within one match of completing a transformation in the club’s fortunes since an Abu Dhabi-backed takeover in 2008.
The next blow to the Spanish giants was self-inflicted as Militao deflected Manuel Akanki’s header past Courtois 15 minutes from time.
Haaland was replaced by Alvarez two minutes from the end and that was all the Argentine World Cup winner needed to make his mark as he slotted home from Phil Foden’s pass.
AFP