(CNN)Italy narrowly overcame Belgium in one of the most thrilling games of Euro 2020 to book a date with Spain in the semifinals.
All three goals in the Azzurri's 2-1 came in the first half, with brilliant strikes from Nicolo Barella and Lorenzo Insigne opening up a two-goal lead.
However, the deficit was halved just moments later after Romelu Lukaku converted from the penalty spot following a clumsy foul from Giovanni Di Lorenzo on teenager Jeremy Doku, who was a standout performer among some of the Belgium's more established stars.
Lukaku had two great opportunities to equalize in the second half, but some last-gasp Italian defending prevented the Inter Milan forward from getting a clean look at goal.
Italy played with its back to the wall for much of the game, but Belgium's lack of cutting edge up front meant that its veteran central defensive pairing of Giorgio Chiellini and Leonardo Bonucci was rarely troubled.
Belgium came into this tournament with lofty expectations, with many labeling Euro 2020 as the last chance for the country's aging 'golden generation' to win some silverware.
The Red Devils had certainly lived up to hype so far, winning all three of its group games before efficiently, if not emphatically, dispatching defending champion Portugal in the last 16.
Conversely, few had expected Italy to shine as bright as it has at Euro 2020.
The boundless energy of the likes of Leonardo Spinazzola and Manuel Locatelli have given this team an exciting attacking edge, while the return of Marco Verratti from injury has given the midfield increased control.
Belgium started this match -- perhaps as expected -- on the front foot, with Lukaku finding space in behind the Italian defense on two occasions early on. The chances came to nothing, but it was a sign of things to come as Belgium dominated the opening half hour.
Italy thought it had taken the lead against the run of play after Leonardo Bonucci turned home Insigne's free-kick, but VAR ruled the defender had strayed narrowly offside.
Along with Eden Hazard, Kevin De Bruyne was also expected to miss this tie through injury -- or at least only be fit enough for the bench -- but head coach Roberto Martinez surprised everyone by including the Manchester City star in his starting lineup.
There were certainly no early signs of that leg injury hampering De Bruyne, who was dictating play from midfield and looking explosive on the counterattack.
After one of several marauding runs forward, a sweet, left-footed strike brought a brilliant save out of Italy goalkeeper Gianluigi Donnarumma. The young keeper was called into action again soon after, turning Lukaku's low shot around the post.
But Belgium would be left to regret its failure to capitalize on that early dominance as Italy took the lead on the half hour mark.
Barella picked up a loose ball inside the penalty area and somehow jinked his way through three red shirts, before firing a vicious strike in off the far post that gave Thibaut Courtois no chance.
Belgium picked up where it left off before the goal, huffing and puffing but not really troubling Italy's back line.
Mancini's side may have strayed somewhat from the classic Italian textbook on defending, but many of the hallmarks that have made Italy teams of the past successful still remain, notably in veteran Chiellini's marshaling of the defense.
However, it would be Italy that scored again and it was Insigne with one of the goals of the tournament. The diminutive Napoli forward cut inside onto his right foot and curled a wonderful effort past Courtois' outstretched arm and into the far corner.
Belgium was shell-shocked, its players stood around with hands on hips as Martinez looked on, arms folded, already with a hint of resignation on his face.
But his side was afforded a lifeline just seconds later, as referee Slavko Vincic pointed to the penalty spot following Di Lorenzo's clumsy push -- if a bit soft -- on Doku.
Lukaku made no mistake from the spot, hammering his penalty down the middle of the goal.
If the opening 45 minutes was up there with the best half of football at Euro 2020 so far, the second period didn't begin in the same manner. Both teams seemed content with catching their breath, but Belgium soon began to press forward in search of an equalizer.
The first opportunity came on the hour mark after Doku's incisive run and pass found De Bruyne, who squared the ball across the face of goal. It looked for all the world as though Lukaku would have a simple tap in at the far post, but a deft deflection from Spinazzola just took it out of the forward's reach.
Italy's defenders, in particular Chiellini, celebrated with Spinazzola as if he'd scored a goal.
Belgium continued to throw everything at Italy, including goalkeeper Courtois for the final corner of the match, but in truth the Italian back line never looked like being breached.
For Belgium's 'golden generation' this could well be the end of the road, but Italy -- which failed to even qualify for the World Cup in 2018 -- now has a realistic chance of winning a first major trophy since the 2006 World Cup.