Manchester City head into the second-leg of this quarter-final tie with a one goal lead, as the better team came out the victors at the Etihad Stadium.
Both teams were able to play their game,City with the possession play, passing the ball across the pitch. And Dortmund, patiently waiting for their opportunity to pounce and counter with strength.
All goals played out this way, with City able to deny Dortmund a come-back draw thanks to a last-minute Phil Foden winner.
Here's how we rated the players...
Ederson - 7.5
Was called into action often, able to come out and smother the ball, or make a save when needed. Made a mistake which should have led to a Bellingham goal, but was bailed out by the referee blowing for a foul before the ball crossed the line. It was the Brazilian's saves though, which helped win City the game.
Kyle Walker - 6.5
Handled himself capably in one-on-ones when defending, but while on the ball his passing was wayward. Was able to make a few bursting runs into the opposition box but without a number nine to play off the chances came up short.
John Stones - 8
Out of all the City players, Stones was allowed the most time on the ball, rarely put under pressure unless he strayed into the centre-circle. Stood up well to Haaland's attacks and helped keep the Norwegian menace quiet in the first-half.
Ruben Dias - 7.5
Made some big tackles, interceptions, and blocks. One incident against Haaland left Dias on the floor, but aside from that he was as competent as we've come to expect.
Joao Cancelo - 6.5
In the opening moments he played as more of an inverted full-back like we see from Zinchenko, and later wide-left as we've seen recently from Mendy. Neither position suited him as well as his free-roaming role and stunted his contribution to the team.
Rodrigo - 6
Surrounded as soon as he received the ball, the Spaniard was obviously targeted by Dortmund as the player to lose possession when threatened. Allowed himself to be pushed into making mistakes too easily at times, but everything needed to go through him in the centre of the pitch.
Bernardo Silva - 6.5
Pressed high up the pitch quickly, constantly buzzing around Dortmund's defence, looking to force them into a mistake. When City had the ball, Bernardo moved out to the right to offer an extra body on that side. Played his part well but not incredibly effective.
Ilkay Gündogan - 7
Took most of the first-half to really get into the game, often running into tackles, and allowing opponents to drift past him. As the game opened up he made some incisive runs like getting onto De Bruyne's cross to assist Foden's goal.
Kevin De Bruyne - 8.5 (MotM)
Controlled the game expertly from just behind the forward-line. With a master-stroke Dortmund's defence were opened, and the Belgian was sharp to any loose ball or chance to make a tackle. Was instrumental in setting up both of City's goals, the first of which he also got on the end of.
Riyad Mahrez - 7.5
Waited patiently to make a well-timed pass to De Bruyne for City's first goal. Always looked threatening for an assist when on the ball. Another good game for the Algerian and it's unsurprising he's one of Guardiola's go-to players.
Phil Foden - 8
Made some great runs, showing beautiful skill. His end product let him and the side down on occasion, but it was ultimately his goal which won the game. When his shots were on target, they were right at the keeper, but the young lad persevered and didn't let anything deter him from being the man who made the difference in the end.
Gabriel Jesus - 7
The presence of City's number 9 turned the game on its head in the second-half. There were a few times where the team could have done with a player in that spot, and once Jesus came on to provide that it became easier to break Dortmund down and get some shots off on goal.
You can follow Richard on Twitter here: @Ignoblewretch
Follow us on Twitter for live updates: @City_Xtra