Manchester City came from behind to defeat Barcelona 3-1 as Atletico Madrid, Bayern Munich, Arsenal and Paris Saint-Germain booked places in the knock-out phase of football's Champions League.
Bayern also conceded the first goal before beating PSV Eindhoven 2-1 while Atletico Madrid advanced with a late 2-1 defeat of Rostov.
PSG also scored late to win 2-1 at Basel while Arsenal came from two goals down to win 3-2 at Ludogorets for both the French and English sides to ensure progress.
In Manchester, City gained revenge for a 4-0 defeat in Barcelona two weeks ago with an impressive display at the Etihad Stadium to the delight of coach Pep Guardiola against his former club.
Barcelona went ahead with an incisive counter-attack finished off by Lionel Messi in the 21st minute.
But Guardiola's side got back when Ilkay Guendogan slotted in six minutes before the break when Raheem Sterling neatly set him up.
Kevin De Bruyne then scored from a direct free-kick after the break and Guendogan bagged his second after a neat move in the 74th minute as City ended a series of five successive defeats against the Spanish side.
Barca still top Group C on nine points, with City two adrift and Borussia Moenchengladbach on four, with their hopes of progressing dampened in a 1-1 draw with visiting Celtic.
In Group D, PSV Eindhoven took the lead against Bayern through Santiago Arias from close range in the 14th minute, with the Germans protesting strongly he was offside.
But Robert Lewandowski, who had twice hit the woodwork, levelled in the 34th minute from the penalty spot following a handball offence, and the Poland striker then netted the winner from close range in the 74th.
Atletico Madrid's first-half lead against Rostov courtesy of an artistic effort from Antoine Griezmann was soon cancelled out by Sardar Azmoun but France striker Griezmann again struck in stoppage time for the winner.
In Group A, Arsenal conceded two early goals against Ludogorets in Sofia - a team they hammered 6-0 two weeks ago - through Jonathan Cafu and Claudio Keseru, but came back to go into the break at 2-2 with goals from Granit Xhaka and Olivier Giroud.
The Gunners then decided the game in the 88th minute with a magnificent goal from Mesut Oezil, who chipped the goalkeeper and dummied past two defenders before slotting the ball into the net.
Visiting PSG meanwhile edged Basel 2-1 thanks to a late winner from Thomas Meunier.
Besiktas and Napoli played out a 1-1 to keep alive their hopes of qualifying from Group B.
Benfica went level on points with Napoli thanks to a 1-0 win over Dynamo Kiev, Eduardo Salvio converting from the spot shortly before half-time.