AC Milan came from behind to beat Paris Saint-Germain to leave UEFA Champions League Group F wide open.
PSG looked well set to cement their place at the top of the table when Milan Skriniar gave them the lead, but goals from Rafael Leao and Olivier Giroud turned the contest on its head.
It did not look likely when Skriniar stooped low to nod home a flick-on from Marquinhos on nine minutes.
Kylian Mbappe wasted a big chance for PSG when stabbing wide after racing clear, while Ousmane Dembele saw a shot crash off the bar.
Milan snatched the win on 50 minutes when Giroud rose high to head home a superb cross from Theo Hernandez.
The win lifts Milan to five points, one behind PSG. Borussia Dortmund are the group leaders after beating Newcastle earlier in the day.
Shakhtar stun Barca
Shakhtar Donetsk breathed life into Group H with a 1-0 win over Barcelona.
Barca went into the game knowing a win would guarantee their progression to the knockout stages with two games to spare, but they were extremely disappointing in slipping to defeat at the Volksparkstadion.
Danylo Sikan’s header on 40 minutes was worthy of winning any game as Shakhtar opened up the group.
Shakhtar began brightly, and Marc-Andre ter Stegen had to stand tall to deny Mykola Matviyenko.
The Ukrainian side restricted Barca to shots from distance in the first half – Raphinha lashing over from 20 yards being the most notable effort – and it came as no surprise when Shakhtar went ahead with a glorious goal.
Georgiy Sudakov played a raking cross-field pass to Giorgi Gocholeishvili who whipped in a teasing cross from the right and Sikan climbed high to head into the top corner.
Sikan had a huge chance to double Shakhtar’s lead when he was slipped in by Oleksandr Zubkov, but his effort was kept out by the legs of Ter Stegen.
Xavi’s feelings on Barca’s display was summed up when he threw on four substitutes – Pedri, Joao Felix, Lamine Yamal and Alejandro Balde – shortly before the hour mark.
Barca improved following the changes, but were unable to make the breakthrough and Newerton thought he had sealed the win only to be flagged for offside.
It was a nervous finish, with seven minutes of added time, but Shakhtar held on for the win.
Pepe got on the scoresheet as Porto beat Royal Antwerp 2-0 to join Barca on nine points. Shakhtar have six points, while Antwerp remain pointless.
Dortmund too good for Newcastle
After starting their Champions League campaign with a draw at AC Milan and win over Paris Saint-Germain, The Magpies were beaten by Dortmund last month and the German side did the double at Signal Iduna Park.
Niclas Fullkrug gave Dortmund the lead on 26 minutes, firing home from close range after Newcastle failed to make the clearance on a number of occasions.
Newcastle were unable to find a response, and Julian Brandt sealed the win with a breakaway goal on 79 minutes.
The victory lifted Dortmund to seven points, while Newcastle are in fourth in Group F on four points.
City win to book qualification spot
Phil Foden doubled the lead with a lovely, low finish on the stroke of half-time.
Haaland scored the goal of the game on 52 minutes, drilling a shot with his left foot into the top corner from 20 yards.
RB Leipzig won 2-1 at Crvena Zvezda to move onto nine points, and join City in qualifying from Group G.
Celtic well beaten by Atleti
Celtic’s hopes of qualification were dealt a crushing blow with a 6-0 loss at Atletico Madrid.
Antoine Griezmann and Alvaro Morata scored two goals apiece – Samuel Lino and Saul Niguez grabbed the other two – to leave The Bhoys on one point from four games.
The win lifted Atleti to the top of Group E with eight points.
Lazio beat Feyenoord thanks to a Ciro Immobile goal and are on seven points, one in front of the Dutch side.
Olivia Martin is a dedicated sports journalist based in the UK. With a passion for various athletic disciplines, she covers everything from major league championships to local sports events, delivering up-to-the-minute updates and in-depth analysis.