Manchester City survived a bruising encounter with Atletico Madrid to reach the Champions League semi-finals after a hard-fought goalless draw in the Spanish capital.
Pep Guardiola’s side battled an intimidating atmosphere and a fired-up home side at the Wanda Metropolitano to edge a tense quarter-final courtesy of last week’s 1-0 first-leg win.
Atletico finished with 10 men as Felipe – who escaped a booking for a terrible challenge on Phil Foden in the first half – was sent off as home frustrations boiled over in the closing stages.
Trouble then appeared to break out after the match, with TV footage showing problems continuing in the tunnel after the players had left the field with some needing to be separated and objects thrown
City defender John Stones was pleased his teammates kept their cool under provocation. "We know that they sometimes try and make things happen like that and we dealt with it really well," he told BT Sport.
"It is not nice to talk about and I don't want to dwell on it because over the two legs we played incredible against such an experienced side in what they do, we kept our tempers and it is easy to get drawn into stuff like that.
"We knew it was not an easy place to come, it is a hostile environment, it was a difficult night all round and how we defended and controlled ourselves over the two legs was incredible."
Guardiola added: "It is the champion of Spain and they played with energy and in second half were better than us and we were lucky we didn't concede. In the first half we had chances, overall we are in the semi-finals - it is well deserved.
"The opponent is so tough, all the teams in Champions League come here and suffer so it is important we go through."
City midfielder Ilkay Gundogan went close to scoring when he hit the post in the first half but the visitors had to dig deep late on.
Atletico upped the tempo in the closing stages and there were some moments of alarm, not least when Antoine Griezmann shot narrowly wide and Angel Correa tested Ederson in stoppage time.
City withstood great provocation to hold out and book a return to the same city to face Real in the last four.
A number of players took knocks for their troubles, with Foden needing to be bandaged around the head and Kevin De Bruyne limping off.
The atmosphere was ferocious as Atletico fans did their best to throw City off their game.
Yet after Uefa hit Atletico with a partial stadium closure for this game for discriminatory behaviour by supporters – a sanction suspended by the Court of Arbitration for Sport – the fans did themselves no favours before the game.
First they vociferously booed the competition’s anthem in protest at Uefa’s attempted punishment and then did similar as City’s players took the knee as a statement against racism.
As the action began, Atletico started positively. Manager Diego Simeone was widely criticised for his defensive, damage-limitation tactics in the first leg but, with an onus to attack this time, they looked to get forward more.
Joao Felix made a good run down the right in the opening minutes and fired across a dangerous ball looking for Renan Lodi in the box but Kyle Walker read the situation.
The hosts soon showed their notorious physical side however as Felipe clattered into Foden from behind as the City midfielder went up for a header.
Foden suffered a cut to the head and needed to be bandaged up but remarkably Felipe was not booked by German referee Daniel Siebert who – for not the only time – was surrounded by protesting Atletico players.
Yet if Felipe was let off on that occasion, there was no escape soon after when he clipped De Bruyne. This time Siebert did brandish the yellow card.
Despite finding Atletico tough to deal with, City did look the stronger side. They controlled possession for large spells and did start to threaten.
Gundogan shot wide and Stones headed over from a corner before they went close to opening the scoring just before the half-hour.
Walker and Riyad Mahrez combined well on the right before Foden teed up Gundogan to crash a shot against the base of the post. The German’s follow-up header was blocked and Atletico scrambled clear.
City managed to restrict Atletico’s openings and Geoffrey Kondogbia failed to make the most of a chance when his shot was deflected and gathered by Ederson.
Atletico looked to step up the pace in the second half and went close to levelling the tie when Griezmann caught hold of a half-volley from a Felix lay-off that drifted narrowly wide.
Another good move then saw Correa flash an effort just wide of the top corner moments after coming off the bench. Fellow substitute Rodrigo De Paul also volleyed wide.
But time began to run out for the hosts and their frustration became evident as Felipe caught Foden again. A scuffle broke out, heavily involving Stefan Savic and Jack Grealish, which ended with Felipe sent off.
Atletico were not quite finished but City held on with Ederson saving from Correa in the closing seconds.