Liverpool and Porto made it through to the last 16 on a night when Shakhtar beat Real Madrid again, Bayern denied Atlético and Inter stayed in contention.
Atlético 1-1 Bayern
The hosts knew victory would send them into the last 16 as runners-up to Bayern and the in-form João Félix gave them a deserved first-half lead by sweeping in Marcos Llorente’s low cross. That looked to be enough until substitute Thomas Müller was clipped by Felipe and the Bayern forward converted from the spot to leave Diego Simeone’s men needing a point at Salzburg on Matchday 6 to progress.
Key stat: Atlético have lost only one of their last 25 UEFA Champions League home games – they are unbeaten in their last 13 (W9 D4).
Lokomotiv Moskva 1-3 Salzburg
The Austrian champions got their first Group A win with a clinical display of finishing in Moscow, Mergim Berisha scoring twice in the first half to put them in control. Lokomotiv tried to rally after the restart and substitute Anton Miranchuk halved the deficit with a penalty in the 79th minute – only for Salzburg replacement Karim Adeyemi to skip through the home defence and fire in the clincher two minutes later.
Key stat: Salzburg have scored ten goals in their five group games at an average of two per match.
09/12: Salzburg vs Atlético, Bayern vs Lokomotiv
Shakhtar Donetsk 2-0 Real Madrid
Shakhtar completed a Group B double over Madrid with some clinical counterattacking in Kyiv. Marco Asensio hit a post early on as Madrid controlled the first half, but it was after the interval that Shakhtar's tactics came to the fore and substitutes Dentinho and Manor Solomon both scored on the break. Luís Castro's side are ahead of Madrid in the standings going into Matchday 6.
Key stat: Madrid have never failed to make it out of the group stage in 24 previous appearances.
Mönchengladbach 2-3 Internazionale
Inter kept alive their hopes of qualification thanks to a Romelu Lukaku double. Inter's talismanic striker was involved in the move that led to Matteo Darmian’s opener, but the dominant visitors were pegged back by Alassane Pléa’s header on the stroke of half-time. Lukaku restored the visitors' advantage and then tapped in Achraf Hakimi’s cross to make it 3-1. Pléa pulled one back and had another ruled out to ensure Group B will go to the wire. Key stat: Both Lukaku (4) and Pléa (5) have scored their group stage goals in just two games this season.
09/12: Internazionale vs Shakhtar Donetsk, Real Madrid vs Mönchengladbach
Porto 0-0 Man.City
Porto booked qualification and City confirmed top spot in Group C after a magnificent goalkeeping performance from Agustín Marchesín. Among a series of superb saves, the Porto keeper denied Raheem Sterling early in the second half, then kept out a Ferran Torres overhead kick from point-blank range to secure the hosts a point.
Key stat: City had not failed to score in the Champions League in 14 matches, last drawing a blank when they lost 1-0 at Tottenham in the first leg of their quarter-final in April 2019.
Marseille 2-1 Olympiacos
A pair of Dimitri Payet penalties overturned a 1-0 deficit to help Marseille claim their first points in the section. Though Olympiacos led at the interval through Mohamed Camara, OM found their way back into the contest through Payet's two successful conversions from the spot.
Key stat: Marseille’s win ended a record-breaking run of 13 straight Champions League defeats stretching back to 2012.
09/12: Olympiacos vs Porto, Man. City vs Marseille
Liverpool 1-0 Ajax
Liverpool earned qualification and top spot in Group D courtesy of a neat finish from Curtis Jones. The teenager tapped into an empty net just before the hour, after visiting keeper André Onana misjudged Neco Williams' cross. Ajax almost broke the deadlock themselves 90 seconds earlier, with David Neres striking a post. Jones and Roberto Firmino were also denied by the woodwork for the hosts.
Key stat: Curtis Jones (19 years & 306 days) became the third youngest Liverpool Champions League scorer, after David Ngog (19 years & 252 days) and Trent Alexander-Arnold (19 years & 10 days).
Atalanta 1-1 Midtjylland
Cristian Romero’s 79th-minute header saved Atalanta as Midtjylland’s hopes of a first Champions League win were dashed. The game started with a twist as stand-in captain Alexander Scholz’s half-volley fired the Danes in front. An intense Midtjylland pressed high, and their compact defensive unit contained Atalanta’s attacking threat for most of the match. However, a late lapse saw Romero glance in to ensure the spoils were shared.
Key stat: Atalanta have won just one of their six home games in the Champions League group stage.
09/12: Ajax vs Atalanta, Midtjylland vs Liverpool