Manchester City produced a mature and disciplined performance to hold off the challenge of Atletico Madrid - and set up a Champions League semi-final showdown with the Spanish side's city rivals Real.
Knowing a clean sheet would be enough to seal the tie, City kept their cool in the face of a hostile home crowd and intimidation from a physical Atleti side showing far more ambition than in the first leg.
Ilkay Gundogan could have made life much easier for Pep Guardiola's men by slotting in from close range, instead of against the post in the first half.
But in the face of much-increased pressure and a home side pushing desperately for parity, City put up a resolute rearguard action to confirm their progression to the last four.
Atletico ended the fiery contest with 10 men when defender Felipe was shown a second yellow card for a dangerous follow-through on Phil Foden, having received his first for an arm that drew blood from the England international's head.
Real Madrid, who edged past Chelsea in a thrilling quarter-final tie on Tuesday, now stand between City and a second successive appearance in the final of Europe's premier club competition.
Having lost to Thomas Tuchel's Blues in last season's final, Guardiola's side are seeking a maiden Champions League title in a campaign where they are still challenging on three fronts.
They lead the Premier League by one point from second-placed Liverpool - and face Jurgen Klopp's Reds in an FA Cup semi-final this Saturday.
City dig deep to reach the last four
City have grown accustomed to controlling games of football at this level, strangling the life out of teams through sheer volume of possession before surgically picking them off in what are often benign, one-sided encounters.
For 45 minutes here, though, they were given a taste of their own medicine and forced to dig deep against extreme pressure from an increasingly desperate opponent, whose ill-discipline in stoppage time should could easily have resulted in further red cards.
It is a huge feather in City's cap that they were able to hold firm against repeated attacks and then keep their heads as Atletico were losing theirs.
It is a shame that the credit the home side's attacking display deserved was largely overshadowed by their unnecessary antics. They included a potential headbutt from former City centre-back Stefan Savic on Raheem Sterling - and hair pull on Jack Grealish - during an unsavoury melee involving both sets of players and the two benches after Felipe's foul on Foden.
Clashes also continued at full-time as both sets of players made their way down the tunnel.
Prior to this, the 90 minutes had showcased a different approach from the Spanish champions in comparison to a first leg in which they operated largely in a 5-5-0 formation and failed to muster a single effort on goal.
Roared on by a vociferous home crowd, they pressed fiercely, harrying the City players all over the pitch.
Having stayed in the tie for three quarters of it - with Geoffrey Kondogbia's blocked 35th-minute effort their solitary shot across both legs - the hosts came out swinging for the second period.
Antoine Griezmann went close, as did Rodrigo de Paul, Matheus Cunha and Luis Suarez, as boss Diego Simeone threw every attacking option he had onto the field in the hope of breaking the visitors down.
But this is not an easily intimidated City side, nor does their elite attacking prowess come at the expense of defensive frailty, even when injury affected Kevin de Bruyne and Kyle Walker and forced the introduction of Nathan Ake.
John Stones was immense, with a block to deny a Cunha effort from close range the highlight of an intelligent and dogged display.
Keeper Ederson was also called upon for a heroic moment, saving superbly to stop Angel Correa's shot after the ball had broken to the Atletico man in the box in the 11th minute of added time.
Celebrations were mixed among the confrontations at full-time, but City have little time to rest after this epic energy-sapping encounter.
Saturday sees them face Liverpool in the FA Cup semi and, two weeks from now, Real will visit the Etihad.
Player of the match
AkéNathan Aké
Atlético Madrid
Squad number7Player nameJoão Félix
Squad number13Player nameOblak
Squad number8Player nameGriezmann
Squad number14Player nameMarcos Llorente
Squad number11Player nameLemar
Squad number12Player nameRenan Lodi
Squad number4Player nameKondogbia
Squad number6Player nameKoke
Squad number23Player nameReinildo
Squad number21Player nameCarrasco
Squad number5Player namede Paul
Squad number10Player nameCorrea
Squad number15Player nameSavic
Squad number18Player nameFelipe
Squad number19Player nameMatheus Cunha
Squad number9Player nameSuárez
Line-ups
Atl Madrid
Formation 5-4-1
13Oblak
14Llorente15Savic18Felipe23Mandava12Lodi dos Santos
8Griezmann6Koke4Kondogbia11Lemar
7Sequeira
13Oblak14LlorenteBooked at 80mins15SavicBooked at 90mins18FelipeBooked at 90mins23Mandava12Lodi dos SantosSubstituted forCorreaat 70'minutes8GriezmannSubstituted forCarrascoat 69'minutes6KokeSubstituted forde Paulat 69'minutes4Kondogbia11LemarSubstituted forSuárezat 82'minutes7SequeiraSubstituted forSantos Carneiro Da Cunhaat 82'minutesSubstitutes
1Lecomte5de Paul9Suárez10Correa17Wass19Santos Carneiro Da Cunha21Carrasco22Hermoso24Vrsaljko26Serrano MartínezMan City
Formation 4-3-3
31Ederson
2Walker5Stones14Laporte27Cancelo
17De Bruyne16Rodri8Gündogan
26Mahrez47Foden20Bernardo Silva
31Ederson2WalkerSubstituted forAkéat 73'minutesBooked at 90mins5Stones14Laporte27CanceloBooked at 90mins17De BruyneSubstituted forSterlingat 65'minutes16RodriBooked at 85mins8Gündogan26MahrezBooked at 90mins47FodenBooked at 90mins20Bernardo SilvaSubstituted forFernandinhoat 79'minutesSubstitutes
3Rúben Dias6Aké7Sterling10Grealish11Zinchenko13Steffen25Fernandinho33Carson48Delap53Edozie87McAtee90LaviaReferee:Daniel SiebertAttendance:65,675Live Text
Match ends, Atletico Madrid 0, Manchester City 0.
Second Half ends, Atletico Madrid 0, Manchester City 0.
Attempt saved. Ángel Correa (Atletico Madrid) right footed shot from the centre of the box is saved in the bottom right corner. Assisted by Rodrigo de Paul.
Attempt missed. Rodrigo de Paul (Atletico Madrid) right footed shot from outside the box misses to the left.
Attempt saved. Yannick Carrasco (Atletico Madrid) right footed shot from a difficult angle and long range on the left is saved in the top right corner.
João Cancelo (Manchester City) is shown the yellow card for a bad foul.
Foul by João Cancelo (Manchester City).
Yannick Carrasco (Atletico Madrid) wins a free kick on the left wing.
Phil Foden (Manchester City) is shown the yellow card.
Foul by Rodri (Manchester City).
Reinildo (Atletico Madrid) wins a free kick in the defensive half.
Attempt saved. Ilkay Gündogan (Manchester City) left footed shot from the centre of the box is saved in the centre of the goal. Assisted by Raheem Sterling with a through ball.
Riyad Mahrez (Manchester City) is shown the yellow card.
Fernandinho (Manchester City) wins a free kick on the left wing.
Foul by Matheus Cunha (Atletico Madrid).
Second yellow card to Felipe (Atletico Madrid) for a bad foul.
Nathan Aké (Manchester City) is shown the yellow card.
Stefan Savic (Atletico Madrid) is shown the yellow card.
Attempt missed. Stefan Savic (Atletico Madrid) right footed shot from the left side of the six yard box is close, but misses to the left. Assisted by Matheus Cunha following a corner.
Attempt missed. Matheus Cunha (Atletico Madrid) header from the centre of the box is close, but misses to the left following a corner.