João Cancelo and João Félix scored in each half to earn Barcelona a 2-1 comeback win at home against Porto that booked their spot in the Champions League knockout rounds for the first time in three seasons.
The visitors wasted several chances before Pepe put them in front in the 30th minute with a close-range strike from a rebound. But Barça hit back quickly with a fine curling shot into the top corner by Cancelo two minutes later.
The Manchester City loanee Cancelo was excellent running down the left channel and teed up Félix for a tidy first-time finish in the to secure the win. Barcelona are top of Group H on 12 points, three ahead of Porto and Shakhtar Donetsk, who defeated Royal Antwerp 1-0 via an early goal from Mykola Matviyenko. Porto host Shakhtar on the final matchday to decide who will join Barça in the knockout stage.
Borussia Dortmund booked their spot in the last 16 by beating Milan 3-1 at the San Siro in a lively Group F clash. The Dortmund midfielder Marco Reus put the visitors in front with a penalty in the 10th minute before Samuel Chukwueze levelled for the hosts from inside the box before the break.
Jamie Bynoe-Gittens restored the lead for Dortmund just before the hour mark and Karim Adeyemi made it 3-1 in the 69th minute after the Milan keeper Mike Maignan twice tried to claw his powerful shot away but the ball made it past the goalline anyway. Dortmund top the group on 10 points, with Paris Saint-Germain, who drew 1-1 with Newcastle, second on seven. Newcastle and Milan both have five points.
Two own goals plus a brilliant, hooked volley handed Atlético Madrid a 3-1 victory over Feyenoord in Rotterdam and sealed a place in the next round, while eliminating their Dutch hosts. Lutsharel Geertruida put the ball into his own net before Mario Hermoso added a stunning second to give the Spanish side a comfortable lead. Feyenoord pulled one back with 13 minutes left as Mats Wieffer headed home from a corner but a second own goal four minutes later, this time from Santiago Giménez, moved Atlético top in Group E and guaranteed them a berth in the last 16. Atlético have 11 points, one more than Lazio, who also advanced to the knockouts after they beat Celtic 2-0 in Rome.
Young Boys defeated Red Star Belgrade 2-0 to seal third place in Group G and a spot in the Europa League knockout round. Kosta Nedeljkovic’s deflected own goal put the hosts ahead before Lewin Blum’s curling effort sealed Young Boys’ victory. The top spots in the group were already claimed by Manchester City and RB Leipzig, with the European champions earning a 3-2 comeback victory to claim top spot.