Italy beat Belgium 2-1 in a pulsating Euro 2020 quarter-final in Munich on Friday to set up a last-four clash with Spain, who needed penalties to get the better of 10-man Switzerland.
Lorenzo Insigne’s brilliant strike proved to be the winner for Italy, who extended their national record unbeaten run to 32 matches.
Roberto Mancini’s men will face Spain in the first semi-final on Tuesday at Wembley.
“We deserved to win. The players were extraordinary,” Italy coach Mancini told Rai.
“It is clear that we suffered in the last 10 minutes because we were tired. They were good, we could have scored a few more goals.”
Belgium and Italy were the only sides to win all 10 games in qualifying and the only teams along with the Netherlands to win every match in the group stage.
The Azzurri, whose only European title came in 1968, started brightly and thought they had struck first when Leonardo Bonucci put the ball in the net, only for VAR to rule the goal out for offside.
Nicolo Barella did give Italy the lead in the 31st minute with a fine solo goal though, jinking between two defenders and hammering a shot into the far corner past Thibaut Courtois.
The Italians were in dreamland when Insigne curled home a wonderful long-range strike into the top corner shortly before half-time.
But Belgium gave themselves hope in first-half stoppage time through a Romelu Lukaku penalty after Jeremy Doku was shoved over in the box by Giovanni Di Lorenzo.
The Belgians had their moments in the second half, with Lukaku denied by some desperate last-ditch defending.
Doku fired over after a mazy run as the world’s top-ranked side piled on the pressure, but Italy held on to reach the semis for the sixth time.