Boban Nikolov scored a last-gasp equaliser for Sheriff Tiraspol as they drew 1-1 with Shakhtar Donetsk to reach the knockout stages of the Europa League.
Fernando had given Shakhtar the lead in the 42nd minute, but Nikolov stabbed in after a goalmouth scramble in the final seconds to ensure the Moldovan club's European adventure continues.
In Group C where there was nothing to play for, Ajax thrashed Sporting Lisbon 4-2 to maintain their 100 per cent win record in the group stages.
Liverpool pick apart Brentford to go second
Sebastien Haller opened the scoring in the eighth minute before Nuno Santos pulled a goal back for the visitors in the 22nd minute. Antony (42') restored Ajax's lead before David Neres (58') and Steven Berghuis (62') all added to the hosts' tally. Tabata scored a consolation for the visitors in the 78th minute.
Erling Haaland came off the bench to score twice and help Dortmund to a convincing 5-0 victory over 10-man Besiktas.
Donyell Malen scored first for Dortmund (29') and the goals kept pouring in, Marco Reus scored from the spot (45+2') after Wellington was shown a red card for upending Mahmoud Dahoud. Reus got his second in the 53rd minute before Haaland made his mark with two goals of his own in the 68th and 80th minute.
Manchester City, who had already qualified for the knockout stages, were beaten 2-1 by RB Leipzig behind closed doors in the early game in Group A. Dominik Szoboszlai (24') and Andre Silva (71') both scored for the hosts,. Kyle Walker was sent off for a wild challenge on Silva and Riyad Mahrez scored a consolation goal (83').
Paris Saint-Germain finished Group A as runners-up with a convincing 4-1 win over Club Brugge. Kylian Mbappe (2' & 7') and Lionel Messi (38' & 76') both scored a brace. Mats Rits scored for the visitors in the 68th minute, but Brugge's hopes of qualifying for the Europa League knockout stages are over.
Atletico Madrid beat Porto 3-1 to reach the last 16 in a result that means the Portuguese club will play in the Europa League after Christmas.
Antoine Griezmann gave the hosts the lead (56') before the match descended into chaos with Yannick Carrasco, Wendell and Agustin Marchesin - who was off the pitch - all received red cards for their involvements in two separate on-the-pitch fracases.
Atletico wrapped up the win in added time thanks to goals from Angel Correa (90') and Rodrigo De Paul (90+2').
Liverpool beat AC Milan 2-1 at the San Siro after coming from a goal down scored by Fikayo Tomori to win thanks to strikes from Mohamed Salah and Divock Origi. Milan finished the group in fourth.
Elsewhere in Group D, top spot was still up for grabs and it was Real Madrid who took it thanks to a 2-0 win over Inter Milan. Goals from Toni Kroos (17') and Marco Asensio (79') secured victory for Real.
Mbappe and Kehrer help PSG ease to win over Brest
'He lost the ball many times' - Tuchel criticises Lukaku after City defeat