Tottenham and Frankfurt are through to the round of 16 after a thrilling conclusion to Group D, on a night that also brought wins for Liverpool, Bayern, Porto, Ajax and Barcelona.
Article top media content
Tottenham and Frankfurt sealed their places in the UEFA Champions League round of 16 after a thrilling conclusion to Group D. Napoli and Porto sealed top spot in their sections, the Portuguese side completing a remarkable turnaround after losing their opening two games by condemning Atlético to a historic loss. Plzeň and Bayern also earned places in the record books – for markedly different reasons.
UEFA.com rounds up all the action.
Who is through to last 16?
Club Brugge (BEL)
Man City (ENG)*
Paris Saint-Germain (FRA)
Real Madrid (ESP)
Mohamed Salah and substitute Darwin Núñez struck late to spoil Napoli's unblemished Group A record. The Reds required a four-goal victory to overtake their opponents and had the best opportunities, Curtis Jones twice going close in the first half. With both sides pushing for a winner, Salah was quickest to react when Alex Meret was unable to hold Darwin's powerful header. The Uruguayan then got in on the act, prodding in with the last kick of the game following another Meret parry.
Key stat: Salah goal was his 41st in Europe for Liverpool, equalling Steven Gerrard's club record.
Ajax booked their Europa League place as Rangers' return to the Champions League ended with the worst ever group stage record. The visitors looked a class above from the off and took the lead when Steven Berghuis collected a lay-off from Mohammed Kudus and clipped in. Kudus fired in a second via a deflection and though captain James Tavernier's penalty did at last give the home crowd something to celebrate, Francisco Conceição – son of Porto boss Sérgio – ran through to score his first Ajax goal.
Key stat: Rangers join Plzeň in a group of 24 sides to have lost all six games in a Champions League group.
Atleti were consigned to fourth place in a Champions League group for the first time as Porto proved too strong. First-half goals from the excellent Mehdi Taremi and Stephen Eustáquio ultimately did the damage, and the home side would have been out of sight but for a combination of wasteful finishing and the brilliance of Jan Oblak. Iván Marcano's 95th-minute own goal was too little too late; Porto, who lost their first two Group B games, finish top.
Key stat: Porto have won four successive Champions League games for only the third time. They have only once managed five in a row, in 2018/19.
Club Brugge missed out on first place in Group B but a goalless draw was enough for hosts Leverkusen to leapfrog Atlético and claim a Europa League spot. Chances were at a premium throughout, although Lukáš Hradecky did well to deny Kamal Sowah in the first half. Tajon Buchanan hit the bar for the visitors early in the second and, as Leverkusen pushed, Simon Mignolet kept out Patrick Schick's powerful header with a brilliant stop.
Key stat: Mignolet kept clean sheets in five of Club Brugge's six Group B games; he conceded four times in the other.
Who is switching to the Europa League?
The third-place sides enter the UEFA Europa League knockout round play-offs. So far confirmed:
Sporting CP (POR)
Having already secured top spot in Group C, Bayern became the first team to take maximum group stage points on three occasions with a comfortable closing victory. Inter arrived knowing they would finish second regardless of the result, and their chances looked slender after Benjamin Pavard rose to head in Joshua Kimmich's first-half corner. The hosts sealed a 13th consecutive group win through Eric Maxim Choupo-Moting's stunning 72nd-minute strike.
Key stat: Bayern have scored in their last 22 home matches in the Champions League – a new record.
A much-changed Barcelona bowed out with an entertaining win in Czechia. Xavi made eight changes from the side beaten by Bayern last week, and his young guns were 2-0 up by half-time courtesy of Marcos Alonso and Ferran Torres. Tomáš Chorý, who headed against the bar at 1-0, struck twice either side of Torres' second but home hopes were dashed when Raphinha sent debutant Pablo Torre through to clip in a delightful finish. Iñaki Peña pushed Erik Jirka's shot on to the post late on but it just wasn't to be for Plzeň.
Key stat: Plzeň's 24 goals conceded equalled a competition record shared by BATE Borisov (2014/15) and Legia Warszawa (2016/17).
Spurs snatched a dramatic victory in a seesaw encounter that ended Marseille's European ambitions. OM were briefly on course for the last 16 when Chancel Mbemba found the net with a magnificent header before the break, but Clément Lenglet's 54th-minute flicked header restored parity. In an intense final 15 minutes, Pierre-Emile Højbjerg rattled the woodwork and Sead Kolašinac's downward header bounced desperately over, before Højbjerg broke free in the final seconds to clinch top spot in Group D.
Key stat: This was the first time Spurs have won an away match against a French side in UEFA competition, at the eighth attempt.
Randal Kolo Muani's angled finish ensured Frankfurt completed a comeback victory at Sporting which booked their place in the knockout stage. The home side were briefly top of Group D after Arthur Gomes gave them a first-half lead, before a drama-filled second period. Daichi Kamada's penalty – awarded after Sebastián Coates was adjudged to have handled – made it 1-1 and gave Frankfurt vital momentum. Kolo Muani's fine strike completed the turnaround, with Sporting at least having the consolation of third place thanks to Spurs' late winner in Marseille.
Key stat: Frankfurt have scored two or more goals in six of their last eight away games in all competitions.