It was fraught, it was suffocating, it was full-blooded – entirely as billed – and it blew up in the 89th minute with a mass melee between the players of both Atlético Madrid and Manchester City, including plenty of substitutes.
The spark had come when the Atlético defender Felipe, already on a booking for having cleaned out Phil Foden in the early going, slid into him by the sideline before seeming to kick him. With Foden down, all hell broke loose, another Atlético defender, Stefan Savic, trying to lift him to his feet and being shooed away by Oleksandr Zinchenko, who was an unused City substitute, as everybody converged.
There would be much more. When the warring parties were eventually prised apart, Felipe received a second yellow card and Savic a first one, presumably for the altercation with Foden rather than his head-butt on Raheem Sterling, another City substitute, which appeared to have been missed.
Stoppage-time stretched into 13 minutes – there would be seven bookings during that period alone – and there was so nearly an Atlético equaliser, the substitute Ángel Correa extending Ederson with a low drive at the very last.
The stadium was in a frenzy, minds being lost and, after the full-time whistle, there would be a fight near the tunnel between Savic, the former City player, and Jack Grealish, another unused City substitute, which led to a posse of police officers charging in after them. Grealish had called Savic the C-word during the melee, which led to Savic grabbing his hair.
And yet, when the tempers had cooled and some kind of sanity returned, City had what they wanted – a place in the Champions League semi-finals, where they will face Real Madrid, the conquerors of Chelsea across town on Tuesday night in what was a different kind of high-octane classic.
From a City point of view, this was all about their resilience, showing cojones – as the locals would put it – and there was a particular joy to be had in how they stuck together during a pressure-cooker of a second half to emerge with a hard won clean sheet.
It was difficult to remember Pep Guardiola’s swashbucklers being pinned inside their own half for so long but that was precisely what happened for pretty much the entirety of the second half, Ilkay Gündogan’s 97th-minute shot that was superbly saved by Jan Oblak not withstanding.
City had imposed themselves in the first half but it was a different story after the interval, Atlético – urged on by a shrill and partisan crowd – choking them, forcing them back, asking uncomfortable questions. From the restart, they pushed high, bringing the aggression, and they had numerous flickers in front of goal, which the home fans were ultra quick to get behind. Renan Lodi’s cross was just too far in front of the dangerous João Félix, the striker headed over from a Marcos Llorente centre and Antoine Griezmann was narrowly off target from the edge of the area.
City struggled to get up the pitch. Atlético’s gameplan had worked, they had their opponents exactly where they wanted them – on the back foot, pulses racing. The heart-in-mouth moments for the travelling City support continued to come. The Atlético substitute Rodrigo De Paul curled wide, Correa howled for a penalty against a combination of João Cancelo and Rodri and, on 87 minutes, another replacement, Matheus Cunha, had a shot blocked by John Stones.
Diego Simeone introduced Luis Suárez from the bench and it seemed written that he would find the equaliser. And yet it was Correa who came the closest at the death, Ederson saving and City exhaling.