Manchester City held Bayern Munich to a 1-1 draw at the Allianz Arena on Wednesday, advancing to the Champions League semifinals 4-1 on aggregate.
For the second season in a row, City will face record 14-time champions and holders Real Madrid in the Champions League semifinals.
Bayern, behind 3-0 from the first leg of the quarterfinal game a week ago, were energised by a raucous home crowd in Munich but failed to convert their early opportunities.
Haaland, who missed a penalty in the first half, virtually put the game out of reach in the 57th minute when he capitalised on a mistake from Dayot Upamecano to score his 48th goal of an incredible season.
With seven minutes left in the match, Bayern eventually got on the board when Joshua Kimmich scored a penalty after a handball was given against Manuel Akanji, but the goal was no more than a consolation.
In the closing minutes, German champions coach Thomas Tuchel was issued a second yellow card and was dismissed from the bench.
“I am so happy to be three semifinals in a row [with City],” Guardiola, who managed Bayern Munich from 2013 to 2016, added. “You saw how good [Bayern] is, so I couldn’t expect anything less.”
“In this competition, the devil is in the details. “In these two games, we were there at the appropriate times. “In the second half, we modified certain things, and from minute one in the second half, we felt much, much more in control.”
Despite the absence of goals, the first half was action-packed, especially for Bayern Munich defender Upamecano.
After putting up an underwhelming display and being at fault for City’s second goal a week earlier, the centre-back was shown a red card for taking down Haaland after just 18 minutes by referee Clement Turpin. The assistant referee’s offside flag was instantly raised, much to his and Bayern’s pleasure, nullifying the sending off.
Another fright, though, was not far away. This time, Upamecano was penalised after his arm slid out from behind his back and got a touch on Ilkay Gundogan’s effort, prompting the referee to award a penalty and show the Bayern player a yellow card.
However, after a lengthy wait, Haaland gave Upamecano another respite when he blasted his penalty over the bar, ending a run of 18 consecutive conversions from the spot, excluding shootouts, and marking his first miss in a City jersey.
Aside from Upamecano’s exploits, Bayern were tormented by a string of near-misses as they sought to relaunch their comeback.
In the 17th minute, former City winger Leroy Sane had the home side’s greatest opportunity of the first half, but he dinked wide of the goal after being sent through one-on-one with Ederson.
Four minutes later, the City custodian turned a Sane free-kick wide of the post, while City’s defenders held strong to repel attempts from Kingsley Coman and Eric Maxim Choupo-Moting in first-half stoppage time.
“It’s really frustrating that we didn’t take the lead with all of our chances,” Kimmich remarked. I’d want to know how this game would have turned out if we had won 1-0 in the first half.”
Bayern had another opportunity early in the second half, but Ederson got down superbly to prevent Kingsley Coman’s low attempt. And, in the flash of an eye, City raced up the other end to practically kill the tie. Kevin De Bruyne breezed into Bayern’s half and threw the ball through to Haaland. Upamecano slid to the grass in front of the Norwegian, who needed no more encouragement to blast a left-footed shot past Yann Sommer.
The goal was the 22-year-old’s 12th in the Champions League this season and 35th overall, displacing Kylian Mbappe as the competition’s youngest player.
Despite Kimmich scoring from the penalty spot after a review for Akanji’s handball, Haaland’s score was more than enough to put City on course to become European champions for the first time.