Goals from Kevin De Bruyne and Phil Foden gave Manchester City a 2-1 win over Borussia Dortmund in the first leg of the pair's Champions League quarter-final tie.
Dortmund started brightly but City soon showed their ruthless side with a free-flowing counterattack. Riyad Mahrez seized upon a misplaced pass from Emre Can, laying it off to De Bruyne who then surged forward before receiving the ball back and finishing from inside the box.
Soon after City were handed a monumental let-off when Jude Bellingham had a goal ruled out before the break. Bellingham clearly beat Ederson to the ball but the referee awarded a foul, blowing his whistle before the ball crossed the line, eliminating the possibility of a VAR check.
Early in the second half Haaland was denied, while Foden also spurned a good chance. With ten minutes left on the clock Marco Reus then scored an equaliser, latching onto Haaland's through-ball and lashing home. Their lead did not last long, though, with Ilkay Gundogan teeing up Foden to net a late winner.
MANCHESTER CITY PLAYER RATINGS
1. Goalkeeper & defenders
Ederson (GK) - 5/10 - Let off an embarrassing error by a terrible refereeing decision. Made a big save from Haaland early in the second half but couldn't keep Reus out.
Kyle Walker (RB) - 5/10 - Pretty careless in possession in the first half. Sharpened up after the break but still surrendered possession 18 times overall.
John Stones (CB) - 5/10 - Given a torrid time by Haaland who dropped into midfield and spun in behind.
Ruben Dias (CB) - 6/10 - Manhandled by Haaland just after the break before just doing enough to put him off a certain goal. Recovered well after that.
Joao Cancelo (LB) - 6/10 - Caught the eye with some pinpoint balls over the top in the second half. An easy shift defensively.
Rodri (CM) - 6/10 - Should have been booked for his tragic attempt to win a penalty in the first. Luckily VAR intervened. Set the tempo.
Ilkay Gundogan (CM) - 7/10 - Passed the ball efficiently against his former club, going long and keeping it simple depending on what suited. Set up Foden for the winner.
Kevin De Bruyne (AM) - 8/10 - Created the goal with an explosive burst through midfield and then finished expertly. Went extremely close to a second after the break and his cross for the winner was sublime.
Riyad Mahrez (RW) - 6/10 - Found De Bruyne for the goal. Created a few more opportunities afterwards as well.
Bernardo Silva (ST) - 6/10 - Deployed as a false nine again. Helped linked things but did not look too dangerous.
Phil Foden (LW) - 8/10 - A couple of seriously impressively flicks and tricks. Spurned a massive chance in the second half but came alive after that to run the rest of the game. Rewarded with a goal.
Gabriel Jesus - 6/10 - His pace gave City another option against Dortmund's high line.
BORUSSIA DORTMUND PLAYER RATINGS
5. Goalkeeper & defenders
Marwin Hitz (GK) - 5/10 - Not a huge amount to do. Spilled one pretty tame effort in the second half.
Mateu Morey (RB) - 5/10 - Did not look entirely comfortable. Sliced a few clearances and Foden gave him a really tough time.
Manuel Akanji (CB) - 6/10 - One venture forward from the back was exhilarating. Also defended pretty well, although he was dribbled past several times.
Mats Hummels (CB) - 6/10 - A few misplaced passess aside he looked comfortable enough.
Raphael Guerreiro (LB) - 6/10 - He did not have much opportunity to venture forward as he often does. Maintained his discipline.
Jude Bellingham (CM) - 8/10 - Was absolutely everywhere, filling in defensively and only being denied a goal by an awful refereeing decision. His searching ball led to the equaliser.
Mahmoud Dahoud (CM) - 6/10 - Did a little bit of everything, keeping things neat and tidy in possession.
Emre Can (CM) - 4/10 - His mistake in the lead up to the opening goal proved fatal. Was at least spared giving away a penalty by VAR.
Ansgar Knauff (RW) - 5/10 - Bizarrely selected despite his lack of experience. He was the weak link going forward but was enthusiastic at least.
Erling Haaland (ST) - 7/10 - Always a danger. If we view this as a dress rehearsal ahead of a summer move to City he definitely got the part.
Marco Reus (LW) - 7/10 - Started brightly but his influence faded as Dortmund were forced into more and more defending. Burst to life for the equaliser, finishing clinically.
Gio Reyna - 5/10 - Put in a shift but was not involved in too much in the final third.
Thomas Delaney - 6/10 - Very little to report.
Thomas Meunier - 4/10 - Pretty slack defending for City's second goal.