Manchester City are through to the Champions League semi-finals after beating Atletico Madrid 1-0 on aggregate in the quarter-finals.
After securing a slender 1-0 advantage in the first leg last week, the Citizens played out a fiery goalless draw at the Wanda Metropolitano on Wednesday night, which was marred by unsavoury scenes towards the end of the game.
Atletico centre-back Felipe was shown two yellow cards, while former Man City defender Stefan Savic was at the heart of the mayhem in Madrid and was fortunate not to see red, but City managed to keep their cool and produce a professional performance to edge past their Spanish counterparts.
Pep Guardiola's men have advanced to the Champions League semi-finals for the second successive season and have set up a tie with Atletico's city rivals Real Madrid.
With Atletico trailing in the tie, Diego Simeone's men knew they could not sit deep throughout the 90 minutes on home soil if they were to have any chance of turning the tie on its head, and to their credit they put the Citizens under pressure in the final third, particularly in the second half.
While Atletico made notable improvements in attack, a plethora of strong challenges were flying in from the off, with their first, made by Felipe, drawing blood from the head of Phil Foden in the 12th minute.
The Brazilian defender was fortunate not to receive a yellow card for clattering through the back of Foden when contesting a high ball. The Englishman was assessed by City's physios and was deemed fit to continue after having his head bandage.
Felipe was eventually booked for a late tackle on Kevin De Bruyne in the 25th minute, going through the back of the Belgian playmaker and clipping his heels.
Both sides enjoyed a fair share of possession in the opening exchanges of the first half, with the hosts spurred on by their passionate supporters, but as the game went past the half-hour mark, City began to turn the screw and were causing problems in the final third for Atletico's backline.
The Citizens came so close to breaking the deadlock when Ilkay Gundogan saw a poked effort from 12 yards hit the post and a header from the rebound blocked by the body of Felipe, before Atletico managed to scramble the ball away from danger.
The first half came to a close with Atletico bringing out their old tricks, pleading for referee Daniel Siebert to banish his cards on their English counterparts, but the German official was having none of their antics.
Atletico Madrid started the second half on the front foot with Joao Felix and Antione Griezmann the two main threats for the hosts in the final third.
After Felix failed to convert two decent chances in the opening 10 minutes of the second half, the Portuguese forward teed up Griezmann for a left-footed volley on the edge of the area, which was sliced narrowly wide of the left-hand post.
In the 65th minutes, Guardiola was enforced into his first change on the night, after De Bruyne picked up a knock to his shin and was replaced by Raheem Sterling.
Just minutes later, Kyle Walker went down in agony when he appeared to land awkwardly on his ankle following a challenge with Renan Lodi. The right-back attempted to carry on but went down just a couple of minutes later and was eventually replaced by Nathan Ake.
In the final 20 minutes, Atletico pushed further forward and were asking some serious questions to City's backline as they tried to find an equaliser, but Guardiola's battered and bruised bunch continued to hold on to their slender advantage.
John Stones, who picked up the man-of-the-match award for his resilient display at the back, made a vital block inside the six-yard box from a powerful Matheus Cunha strike in the final five minutes.
Atletico continued to push for an equaliser but their attacking efforts were overshadowed by their unsavory behavior in the closing stages. After Felipe was penalised for another foul on Foden towards the corner flag, Savic raced over and attempted to drag the Englishman to his feet, which sparked a wild melee with both sets of players.
Savic was seen to have attempted a headbutt towards Sterling, while the Montenegro international was also pictured pulling the hair of substitute Jack Grealish. Once the referee had diffused the situation, Savic was surprisingly awarded only a yellow card for his involvement, while Felipe was shown a second yellow for his late tackle on Foden.
After a number of stoppages due to injuries, substitutions and the unsavoury confrontations, nine minutes were added on in stoppage time, but Man City managed to hold on and book their place in the semi-finals.