Manchester City will face Real Madrid in the Champions League semi-finals for the second straight year after an Erling Haaland goal secured a 1-1 draw and a 4-1 aggregate last-eight win over Bayern Munich on Wednesday.
The Norwegian missed a first-half penalty but muscled his way upfield midway through the second half, lashing past Bayern goalkeeper Yann Sommer for his 48th goal in 41 appearances this season.
Bayern had a second-half goal struck off for offside and scored a late penalty through Joshua Kimmich but were again haunted by their inability to make possession and chances count.
City will play in the semis for the third straight year but face manager Pep Guardiola’s old foe Real, who scored two injury-time goals to spectacularly turn the tie their way on the way to eventually winning the title last season.
Guardiola, so often criticised at European level for tinkering with his side, named the same XI that won the first leg 3-0 in Manchester.
Bayern coach Thomas Tuchel made two changes, opting for the creativity of City loanee winger Joao Cancelo and bringing back Eric Maxim Choupo-Moting, the only recognised striker in the squad.
Bayern, hoping to replicate the miracle Champions League comebacks of Liverpool and Barcelona which started with an early goal, went on the attack from the outset.
Bayern’s other former City star, Leroy Sane, got past goalkeeper Ederson after 17 minutes, but chipped just wide.
Bayern received a massive let off just a minute later in one of City’s first attacking forays thanks to a narrow offside call against Haaland.
Dayot Upamecano, widely criticised for a nervous first-leg performance, saw red for bringing down the Norwegian with the goal in sight, but the card was immediately rescinded.
An animated Tuchel received a yellow for exchanging words with the assistant referee while theatrically applauding the decision.
Bayern’s lack of confidence and fluidity up front was obvious just minutes later, when Sane, one-on-one with Ederson with the goal beckoning, cut the ball back to an off-balance Leon Goretzka.
Upamecano was in the thick of it again with 35 minutes gone, handballing in the box, bringing Haaland to the spot in front of the home ultras.
The Norwegian, however, blasted over only his third miss from 36 penalty attempts, and his first miss for City.
Haaland made up for his error after 57 minutes when he slipped past Upamecano, blasted past Sommer and into the goal to cap off a length-of-the-field City move.
Bayern had the ball in the net after 73 minutes but French teenager Mathys Tel’s goal was ruled out for offside.
With seven minutes left, Kimmich converted from the spot after a Manuel Akanji handball.
The winner of the City-Real tie will face either AC or Inter Milan in the final.
For Bayern, the recriminations will begin on and off the field after City’s dominant display, with a frustrated Tuchel sent to the stands for picking up a second yellow in the final minutes.
Bayern sacked manager Julian Nagelsmann in favour of Tuchel despite an eight-from-eight record in the Champions League this season but have since been eliminated from Europe and the German Cup.