Manchester City got their revenge on Barcelona as Ilkay Gundogan scored twice in a 3-1 win in the Champions League on Tuesday, while Arsenal were one of four sides to secure progress to the last 16.
Pep Guardiola's side had lost 4-0 away in Barcelona two weeks ago but they showed tremendous character to come from a goal down and beat the Spanish champions 3-1 at the Etihad Stadium.
The inevitable Lionel Messi put the visitors in front at the end of a stunning breakaway with his 90th Champions League goal.
However, City pounced on a Sergi Roberto mistake as Raheem Sterling set up Gundogan to equalise six minutes before half-time.
A Kevin De Bruyne free-kick gave City the lead six minutes into the second half and, although Andre Gomes rattled the bar for the visitors, the Premier League side were on top and they secured the victory thanks to Germany midfielder Gundogan's second of the night.
"Today is a good step. We play against a great team and we compete. Now they will realise, 'Wow, we won against the best team,'" said Guardiola.
Barcelona remain top of Group C and need only draw away to Celtic in their next game to progress, while City now know a win away to Borussia Moenchengladbach next time out will take them through.
"It's a shame that after the error we made for the first goal, from them on we had a bad time," said Barcelona coach Luis Enrique.
In Germany, Celtic kept their hopes of at least snatching third place and a Europa League spot alive as they came from behind to draw 1-1 with Gladbach at Borussia-Park.
Lars Stindl put the hosts ahead in the first half but Moussa Dembele levelled from the spot on 76 minutes with a penalty after he had been fouled by Julian Korb, who was sent off.
Mesut Ozil scored a stunning winner as Arsenal fought back from two goals down to beat Ludogorets 3-2 in Sofia and secure their place in the last 16 for the 17th season in succession.
Jonathan Cafu put the Bulgarian champions ahead and then set up Claudiu Keseru to make it 2-0 to Ludogorets inside quarter of an hour.
However, Granit Xhaka and Olivier Giroud scored to haul the Gunners back level before the break, before Ozil's fine solo effort won it two minutes from time.
The German ran through, chipped goalkeeper Milan Borjan and cut inside two defenders before slotting in from close range.
PSG, Atletico, Bayern through
Arsene Wenger's side are through from Group A with two games to spare, as are Paris Saint-Germain, who won 2-1 away to Basel in Switzerland with a dramatic late winner of their own.
Blaise Matuidi's opener for the French champions was cancelled out when a Luca Zuffi cross sailed in, but Thomas Meunier volleyed in a stunning goal to win it at the death.
Last season's runners-up Atletico Madrid and German champions Bayern Munich also qualified for the last 16 on Tuesday from Group D.
Atletico still have maximum points after Antoine Griezmann's stoppage-time goal secured a 2-1 victory over Rostov at the Vicente Calderon.
France star Griezmann had put Atletico ahead on 28 minutes but Rostov looked set to escape with a point after Iranian Sardar Azmoun equalised.
Bayern came from behind to beat PSV Eindhoven 2-1 at the Philips Stadion after Santiago Arias put the Dutch champions in front early on.
Robert Lewandowski got both goals for Bayern, the first from a penalty, and also hit the woodwork three times for Carlo Ancelotti's men.
It is all to play for in Group B, where Benfica beat Dynamo Kiev 1-0 to keep qualification in their hands. Eduardo Salvio scored a penalty for the Portuguese giants before Junior Moraes had a spot-kick saved at the other end.
Earlier, Napoli came back to draw 1-1 with Besiktas in Istanbul, Marek Hamsik netting after Ricardo Quaresma's penalty for the Turkish side.