Liverpool and Ajax booked their places in the last 16 on a night to savour for Karim Benzema and Sporting CP.
Article top media content
Liverpool and Ajax both made club history as they joined Bayern and Juventus in the UEFA Champions League knockout stage with two games to spare, while Manchester City and Real Madrid took big steps closer to joining them. As for Paris and Dortmund, they were stung late on.
UEFA.com rounds up all the action from the second set of Matchday 4 fixtures.
Click on any scoreline to look back at all the action as it happened. Highlights are available from midnight local time.
Who is through to the last 16?
Josep Guardiola's side recovered from a shaky first-half showing to record a comfortable home win. Phil Foden's early tap-in was cancelled out when John Stones deflected a clearance in off his face, and Club Brugge threatened more than once. After the break it was all City, with Riyad Mahrez and substitute Raheem Sterling providing finishes from close range before Gabriel Jesus slid in the fourth with the last kick.
Paris relinquished top spot in Group A to City as Dominik Szoboszlai's last-gasp penalty earned Leipzig a deserved point. The hosts' ferocious start stunned Paris and, after Christopher Nkunku had pounced to head the opener, they went close to a 2-0 lead, only for André Silva's spot kick to be beaten away by Gianluigi Donnarumma. Georginio Wijnaldum's double turned the game on its head, but the hosts kept coming and finally levelled after Presnel Kimpembe fouled Nkunku in added time.
Key stat: Nkunku has scored five goals in his last four Champions League games. Despite his contribution, Leipzig are six games without a win in Europe, conceding two or more in each fixture.
24/11: Club Brugge vs Leipzig, Man. City vs Paris
The Rossoneri's last-16 ambitions hang by a thread after the hosts fell short of the victory they badly needed. Even a first Group B point looked a distant prospect for much of the opening half as Luis Díaz gave Porto an early lead and only Ciprian Tătăruşanu prevented further damage. Milan were better after the break – though Evanilson did hit the bar – and Chancel Mbemba's own goal earned a draw.
Liverpool are group winners with two matches to spare courtesy of a dominant victory over Atlético, who now sit a point behind second-placed Porto. After Diogo Jota nodded in Trent Alexander-Arnold's exceptional cross on 13 minutes, the rampaging right-back provided another assist for Sadio Mané to fire in eight minutes later. Felipe's dismissal before half-time meant it was damage limitation for the visitors thereafter.
The Portuguese champions continued their Group C revival with another emphatic win against their Turkish opponents, who are still without a point. Paulinho passed up two fine Sporting chances in the first ten minutes before Cyle Larin drilled just wide at the other end, the cue for the home side to seize control. Pedro Gonçalves drilled in the first from the spot after being felled, and then twisted and turned to curl in a fine second. Paulinho atoned for his earlier misses with a well-taken third and Pablo Sarabia slammed in a rebound early in the second period.
Key stat: Sporting's win was their biggest in the Champions League – the 4-1 victory at Beşiktaş on Matchday 3 was their largest away success in the competition.
24/11: Beşiktaş vs Ajax, Sporting CP vs Dortmund
Three goals in the final 18 minutes secured Ajax's place in the last 16 as they came back from a goal down. The home side had Mats Hummels sent off but were ahead at half-time through Marco Reus' penalty. However, Antony was instrumental in turning the match around as he assisted for Dusan Tadić, Sébastien Haller – notching his seventh Champions League goal in four games – and Davy Klaassen.
Key stat: Ajax have won their first four games in the Champions League for the first time, eclipsing the three victories they posted at the start of 1995/96.
24/11: Beşiktaş vs Ajax, Sporting CP vs Dortmund
The Nerazzurri had to wait until the second half to break down a resolute Sheriff outfit and leapfrog them into second spot. Marcelo Brozović opened the scoring with an effort that skipped off the surface and beyond Giorgos Athanasiadis, who was also powerless to prevent Milan Škriniar doubling the visitors' advantage. Alexis Sánchez scored with his third touch after coming off the bench, before Sheriff earned a stoppage-time consolation through Adama Traore.
An inspired performance from Karim Benzema saw off a spirited Shakhtar side. The Real Madrid skipper opened the scoring with just under 15 minutes gone, tapping in from close range after good work by Vinícius Júnior. The visitors levelled before the break via Fernando's fierce strike, but Benzema restored Los Blancos' lead after the hour, a crisp finish capping a fantastic team move.
Who can no longer finish in the top two?