Cole Palmer (Mahrez 88’) N/A – Valuable minutes in the tank for the youngster. EPA
BORUSSIA DORTMUND PLAYER RATINGS: Gregor Kobel 7 – Had very little to do until he faced Mahrez from the spot, and he saved the Algerian’s penalty to keep the scores level. He followed this with saves from Gundogan and Alvarez. Getty
Nico Schlotterbeck 8 – An impressive night for the tall centre-back, who together with Hummels kept Haaland quiet, and reduced City to mainly half chances. Whipped up the crowd towards the end, too. AP
Mats Hummels 8 – Did a magnificent job on Haaland, reducing the Norwegian to a shot from distance, which Hummels blocked. Used all of his experience to read the danger and block, clear and distribute when necessary. AP
Niklas Sule 6 – Played deeper than usual but in a right-back position and though a little rusty, he did well up against Phil Foden. Getty
Giovanni Reyna 7 – The 19-year-old came close with a shot following a neat move between Bellingham and Adeyemi, but he couldn’t trouble Ortega. Getty
Emre Can 7 – Made a crunching tackle on Haaland to stop the giant Norwegian in his tracks, which was adjudged to have been a foul. Brilliant at winning the ball back, though was guilty of bringing down Mahrez for the penalty. PA
Jude Bellingham 8 – Dortmund were always dangerous on the counter and, on one occasion, Bellingham released Adeyemi on the right-hand side, only for Dortmund to find Ortega in the way. Bellingham had a shooting chance himself, but slipped at the vital moment. Impressive. Reuters
Thorgan Hazard 5 – Another playing slightly deeper than usual, he was ineffective and later substituted. EPA
Julian Brandt 8 – Got off to a lively start, first by running at Stones and then by curling a free-kick over the bar from 25 yards. Looked excellent on the ball, even in tight areas. Getty
Youssoufa Moukoko 5 – Had the best chance of the first half to break the deadlock, but angled the ball wide following a perfect cross from Adeyemi. Played well, but he lacked the killer touch when he needed it most. AFP
Karim Adeyemi 7 – Enjoyed a fascinating tussle with Cancelo in which both players tried to utilise the space behind each other. He looked dangerous when he went forward, delivering a number of teasing crosses. EPA
SUBS: Donyell Malen (Adeyemi 73’) N/A – A downgrade on the dangerous Adeyemi. AFP
Anthony Modeste (Moukoko 82’) N/A – Ineffective late cameo from Modeste. AFP
Marius Wolf (Hazard 82’) N/A – Decent option from the bench, putting himself about around the City box. AFP
Antonios Papadopoulos (Reyna 87’) N/A – The youngster didn’t have much of a chance to showcase his ability. Getty
MANCHESTER CITY PLAYER RATINGS: Stefan Ortega 8 – The busier of the two keepers and made a number of routine saves. Looked good with the ball at his feet. Happy to dive onto the ball in the second half when Dortmund had several pops at goal. Clean sheet on his debut. EPA
John Stones 7 – Starting on the right-hand side, he got off to a strong start by dispossessing Brandt on the run but then looked uncomfortable. Shifted to the centre and was much better. AP
Ruben Dias 8 – A strong presence in the centre, winning most things in the air and on the floor. AFP
Nathan Ake 7 – Started in the centre but was reshuffled to the left when Cancelo was substituted. Kept possession well. AFP
Joao Cancelo 5 – Looked to bomb forward at every opportunity to get the other side of Adeyemi, but this – together with his booking – meant he left plenty of space for Adeyemi to exploit. Substituted at the break. AFP
Riyad Mahrez 5 – Started the game with a delightful touch to bring the ball down from Rodri. His touch deserted him later in the first half, however, when put through by Haaland. He was brought down by Can to earn a penalty, but he couldn’t convert from 12 yards. Later came close with a volley. AP
Rodri 5 – Joined Gundogan as a holding midfielder and though he kept the ball moving, he wasn’t as effective as usual. Getty
Ilkay Gundogan 6 – Always looking to get the ball from deep. When he did venture forward, he shot straight at Kobel from an angle. Got forward more in the second half. Getty
Phil Foden 5 – Poor in the first half. Started the second half much stronger and after scooping the ball over, he delivered a dangerous cross that led to City being an awarded a penalty. AFP
Julian Alvarez 5 – Played as a no.10 behind Haaland, but had to wait until midway through the second half to get his first sniff at goal. Kobel saved. AFP
Erling Haaland 5 – Came to life after 16 minutes when his presence caused carnage in the Dortmund area and led to a corner. Beyond that, he struggled to get the better of Hummels and was replaced at the break. Getty
SUBS: Manuel Akanji (Cancelo 46’) 6 – Did well to stop Moukoko in his tracks as Dortmund attempted to strike on the break. Was harshly booked when he blocked Adeyemi’s shot with his arm. AFP
Bernardo Silva (Haaland 46’) 8 – City looked much better when he came on, the Portuguese midfielder driving City forward and linking well with Foden. PA
Jack Grealish (Foden 81’) N/A – Probably felt unlucky not to start given Mahrez’s performance, but couldn’t make the breakthrough when he came on. AP
Cole Palmer (Mahrez 88’) N/A – Valuable minutes in the tank for the youngster. EPA
BORUSSIA DORTMUND PLAYER RATINGS: Gregor Kobel 7 – Had very little to do until he faced Mahrez from the spot, and he saved the Algerian’s penalty to keep the scores level. He followed this with saves from Gundogan and Alvarez. Getty
Nico Schlotterbeck 8 – An impressive night for the tall centre-back, who together with Hummels kept Haaland quiet, and reduced City to mainly half chances. Whipped up the crowd towards the end, too. AP
Mats Hummels 8 – Did a magnificent job on Haaland, reducing the Norwegian to a shot from distance, which Hummels blocked. Used all of his experience to read the danger and block, clear and distribute when necessary. AP
Niklas Sule 6 – Played deeper than usual but in a right-back position and though a little rusty, he did well up against Phil Foden. Getty
Giovanni Reyna 7 – The 19-year-old came close with a shot following a neat move between Bellingham and Adeyemi, but he couldn’t trouble Ortega. Getty
Emre Can 7 – Made a crunching tackle on Haaland to stop the giant Norwegian in his tracks, which was adjudged to have been a foul. Brilliant at winning the ball back, though was guilty of bringing down Mahrez for the penalty. PA
Jude Bellingham 8 – Dortmund were always dangerous on the counter and, on one occasion, Bellingham released Adeyemi on the right-hand side, only for Dortmund to find Ortega in the way. Bellingham had a shooting chance himself, but slipped at the vital moment. Impressive. Reuters
Thorgan Hazard 5 – Another playing slightly deeper than usual, he was ineffective and later substituted. EPA
Julian Brandt 8 – Got off to a lively start, first by running at Stones and then by curling a free-kick over the bar from 25 yards. Looked excellent on the ball, even in tight areas. Getty
Youssoufa Moukoko 5 – Had the best chance of the first half to break the deadlock, but angled the ball wide following a perfect cross from Adeyemi. Played well, but he lacked the killer touch when he needed it most. AFP
Karim Adeyemi 7 – Enjoyed a fascinating tussle with Cancelo in which both players tried to utilise the space behind each other. He looked dangerous when he went forward, delivering a number of teasing crosses. EPA
SUBS: Donyell Malen (Adeyemi 73’) N/A – A downgrade on the dangerous Adeyemi. AFP
Anthony Modeste (Moukoko 82’) N/A – Ineffective late cameo from Modeste. AFP
Marius Wolf (Hazard 82’) N/A – Decent option from the bench, putting himself about around the City box. AFP
Antonios Papadopoulos (Reyna 87’) N/A – The youngster didn’t have much of a chance to showcase his ability. Getty
MANCHESTER CITY PLAYER RATINGS: Stefan Ortega 8 – The busier of the two keepers and made a number of routine saves. Looked good with the ball at his feet. Happy to dive onto the ball in the second half when Dortmund had several pops at goal. Clean sheet on his debut. EPA
John Stones 7 – Starting on the right-hand side, he got off to a strong start by dispossessing Brandt on the run but then looked uncomfortable. Shifted to the centre and was much better. AP
Ruben Dias 8 – A strong presence in the centre, winning most things in the air and on the floor. AFP
Nathan Ake 7 – Started in the centre but was reshuffled to the left when Cancelo was substituted. Kept possession well. AFP
Joao Cancelo 5 – Looked to bomb forward at every opportunity to get the other side of Adeyemi, but this – together with his booking – meant he left plenty of space for Adeyemi to exploit. Substituted at the break. AFP
Riyad Mahrez 5 – Started the game with a delightful touch to bring the ball down from Rodri. His touch deserted him later in the first half, however, when put through by Haaland. He was brought down by Can to earn a penalty, but he couldn’t convert from 12 yards. Later came close with a volley. AP
Rodri 5 – Joined Gundogan as a holding midfielder and though he kept the ball moving, he wasn’t as effective as usual. Getty
Ilkay Gundogan 6 – Always looking to get the ball from deep. When he did venture forward, he shot straight at Kobel from an angle. Got forward more in the second half. Getty
Phil Foden 5 – Poor in the first half. Started the second half much stronger and after scooping the ball over, he delivered a dangerous cross that led to City being an awarded a penalty. AFP
Julian Alvarez 5 – Played as a no.10 behind Haaland, but had to wait until midway through the second half to get his first sniff at goal. Kobel saved. AFP
Erling Haaland 5 – Came to life after 16 minutes when his presence caused carnage in the Dortmund area and led to a corner. Beyond that, he struggled to get the better of Hummels and was replaced at the break. Getty
SUBS: Manuel Akanji (Cancelo 46’) 6 – Did well to stop Moukoko in his tracks as Dortmund attempted to strike on the break. Was harshly booked when he blocked Adeyemi’s shot with his arm. AFP
Bernardo Silva (Haaland 46’) 8 – City looked much better when he came on, the Portuguese midfielder driving City forward and linking well with Foden. PA
Jack Grealish (Foden 81’) N/A – Probably felt unlucky not to start given Mahrez’s performance, but couldn’t make the breakthrough when he came on. AP
Cole Palmer (Mahrez 88’) N/A – Valuable minutes in the tank for the youngster. EPA