Douglas Costa scored a dramatic injury-time winner to send Juventus into the Champions League knockout stages after a 2-1 win at Lokomotiv Moscow on Wednesday.
Mauro Icardi’s first-half goal was enough for PSG to edge past Club Brugge 1-0 at the Parc des Princes, as Bayern laboured to a 2-0 victory over Olympiakos to book a last 16 berth.
Juventus knew three points in Russia would be enough to secure their passage to the knockout rounds, and took a fourth-minute lead through Aaron Ramsey.
Cristiano Ronaldo’s free-kick bounced in front of Lokomotiv goalkeeper Guilherme, who inexplicably allowed the ball to squirm through his legs, with Ramsey prodding in from on the goalline.
Aleksei Miranchuk quickly levelled for the hosts by tapping in the rebound after his own header had struck the post, with Maurizio Sarri’s Juve then struggling to break their hosts down.
But Brazilian winger Costa came off the bench and netted a magnificent 93rd-minute winner, slipping the ball through the hapless Guilherme’s legs after a mazy run.
PSG reached the last 16 for the eighth straight season when Mauro Icardi swept home his eighth goal since joining on loan from Inter Milan.
But Belgian outfit Brugge should have grabbed a late equaliser, only for Mbaye Diagne to see his penalty saved by PSG ‘keeper Keylor Navas.
Rodrygo scored a sensational hat-trick and the fastest two goals in Champions League history on Wednesday as Real Madrid humiliated Galatasaray 6-0.
Madrid’s emphatic victory means they are virtually qualified from Group A, sitting five points ahead of Club Brugge, even if PSG look certain to claim first place.
Managerless Bayern Munich had earlier become the first side to go through, as late goals from Robert Lewandowski and Ivan Perisic ended Olympiakos’ resistance at the Allianz Arena.
Bayern lead Tottenham at the top of Group B by five points, after last season’s runners-up thrashed Red Star Belgrade 4-0 in Serbia.
Son Heung-min scored twice just three days after being left devastated by his tackle which caused a horrific injury for Everton’s Andre Gomes, with Giovani Lo Celso and Christian Eriksen also finding the net.
Premier League champions Man City were made to wait after Atalanta’s second-half fightback at the San Siro.
Raheem Sterling, who scored a hat-trick in City’s 5-1 victory in the reverse fixture two weeks ago, put Pep Guardiola’s men in front after only six minutes, but Gabriel Jesus dragged a dreadful penalty well wide shortly before halftime.
Claudio Bravo came on for Ederson at half-time, and the Chilean goalkeeper saw Mario Pasalic’s header fly past him in the 49th minute, but worse was to come when he was sent off with nine minutes remaining for hacking down Josip Ilicic.
England defender Kyle Walker was brought on to play as City held on for a point.
Atletico Madrid also missed out on booking a last-16 place as they slumped to a 2-1 defeat at Bayer Leverkusen, while Shakhtar Donetsk snatched a thrilling 3-3 draw at Dinamo Zagreb thanks to two injury-time goals, including a 98th-minute penalty from Tete.