Atlético Madrid had taken 62 shots without scoring a goal, including the Kieran Trippier penalty that had hit the post 15 minutes earlier, when João Félix finally put the ball into the net to set them on their way to the last 16 of the Champions League. The 20-year-old striker slotted Atlético’s second spot-kick beyond Anton Kochenkov to finally rid Diego Simeone’s side of the anxiety he admitted they were suffering, effectively ending this game and averting a European disaster.

That was the first of two goals, Felipe later adding a second on a cold but ultimately comfortable night when Lokomotiv Moscow mustered a solitary shot on target. It had come after 17 minutes.

Quick guide Roundup: Atalanta stun Shakhtar to qualify Show Hide Atalanta won 3-0 away to Shakhtar Donetsk to take second place in Group C – despite losing their first three group games by an aggregate score of 11-2. Needing a win to progress with Dinamo Zagreb losing to Manchester City, the Italian side went ahead in the 69th minute when Timothy Castagne poked the ball home at the second attempt. Shakhtar's chances of an equaliser were hit by a red card for Dodo, before late goals from Mario Pasalic and Robin Gosens sealed an unexpected last-16 place in their debut Champions League campaign. PSG completed a dominant group stage with a 5-0 win over Galatasaray, with five different players finding the net. Mauro Icardi, Pablo Sarabia, Neymar and Kylian Mbappé all struck before Edinson Cavani's late penalty. Elsewhere in Group A, Real Madrid were pegged back by Club Brugge before goals from Vinícius Júnior and Luka Modric sealed an away win. Rodrygo's half-volley put the visitors ahead early in the second half, before Hans Vanaken equalised two minutes later. Juventus completed an unbeaten Group D campaign with a 2-0 win at Bayer Leverkusen. Late goals from Cristiano Ronaldo and Gonzalo Higuaín – both set up by Paulo Dybala – and Atlético Madrid's win over Lokomotiv Moscow ended Leverkusen's faint hopes of qualifying. In Group B, Olympiakos defeated Red Star Belgrade 1-0 to snatch a Europa League place in a game of two penalties. Tomané missed his spot-kick for Red Star, before Youssef El Arabi converted late on for the hosts. Photograph: Sergei Supinsky/AFP

The game was two minutes in when Trippier failed to score the penalty that would have settled Atlético sooner. Ultimately, it did not matter, but at that point it felt like it might.

Atlético knew failure to win would leave them at the mercy of the group’s other game, Bayer Leverkusen against Juventus. Under normal circumstances that might not have concerned them – Lokomotiv were missing their first-choice goalkeeper, two of their best players and were already out, the sad sight of Vedran Corluka carried off with a suspected broken ankle the only moment of real consequence for them – but these were not normal circumstances. Atlético arrived having not scored in four hours and winning one game in eight.

Facebook Twitter Pinterest Kieran Trippier’s penalty is saved by Anton Kochenkov. Photograph: Gonzalo Arroyo Moreno/Getty Images

Fifty-nine shots had gone by without a goal when they were presented with their 60th and their best opportunity yet. Forty-four seconds in, Félix was brought down. Trippier took responsibility, lining up to score his first Atlético goal. Seeing the Englishman there surprised, although it said something too. The penalty was hit reasonably well but Kochenkov, diving right and off his line, raised his left hand and palmed the shot off the post.

Fatalism could be forgiven. Even from the spot, they might have felt, there was no way to score. But there was an inescapable reality here: Atlético are far better than Lokomotiv. They kept coming, Trippier as determined as ever to advance, and they racked up another 11 shots by half-time, Félix, Ángel Correa and Thomas Partey coming closest.

By then they had the goal, getting the breakthrough when the referee, Viktor Kassai, was called to the VAR screen, which revealed Rifat Zhemaletdinov’s handball. This time it was Félix took it, his shot rolling in by the same post Trippier had hit.

Champions League’s full English another staging post in march of the superclubs | Barney Ronay Read more

Álvaro Morata thought he had made it 2-0 soon after but what VAR had given, VAR took away, ruling it out for offside.

On the pitch, Atlético were not to be denied. Koke’s cross was neatly volleyed in by Felipe early in the second half.

Morata headed just over, the ball clipping the bar, and Thomas flashed just past the post, but they had to settle for two and second place in group D. For the record, they had taken 23 shots.