The game may not have been a goal feast like some of the last-16 ties but it was an intense battle between two excellent teams playing fantastic football.
Italy have been arguably the best team at the tournament so far, while Belgium are the world’s top-ranked team.
The Azzurri’s two goals – which took the team up to 13 consecutive wins and 32 games without defeat – were of the highest quality.
Nicolo Barella wriggled through three defenders before drilling in the opener and Lorenzo Insigne ran from the halfway line before curling in one of the goals of the tournament.
Belgium were given hope late in the first half when Giovanni di Lorenzo fouled Jeremy Doku and Romelu Lukaku scored the penalty.
Both sides had chances to score again in a breathless second half but with no goals it was the Azzurri who progressed.
Roberto Mancini’s side face Spain at Wembley on Tuesday but they may have to do so without impressive left-back Leonardo Spinazzola, who went off on a stretcher late on.
Azzurri rediscover their groove
Italy cruised through their group with three wins – without conceding a goal – but all those were at home in Rome.
But they were nowhere near as impressive in the last-16 tie against Austria at Wembley, needing extra time to win 2-1.
This result in Germany, however, was probably the best of their near-three-year unbeaten run – and the most important too.
It was a breathless start and Leonardo Bonucci bundled in early on – but the goal was disallowed by the video assistant referee for offside.
Gianluigi Donnarumma made a couple of good saves to keep them level before Insigne cut inside and curled just wide – just a sighter for things to come.
Their opener came as Belgium tried to play their way out of defence and Marco Verratti found Barella, who fired home after some lovely footwork.
Insigne then scored a stunning strike to make it 2-0 as he picked the ball up in midfield and cut inside before curling home from outside the box.
They looked comfortable at that stage but then Di Lorenzo needlessly fouled Doku and Lukaku gave Belgium hope.
Mancini’s side had chances after the break – although not as many as Belgium – with Spinazzola, Federico Chiesa and Insigne all going close.
The moment that summed up their day – and Italian football in general – arrived when Spinazzola blocked a Lukaku shot and Bonucci and captain Giorgio Chiellini, back from injury, celebrated with him as if it was the winner.
In truth it was as good as a winner because they never let that lead slip.
They must now be considered favourites against a less-than-impressive Spain in London next week.
Chance over for Belgium’s golden generation?
Belgium’s squad is full of talented players, having been an unremarkable international team for the previous decade or more. But they have not made the most of it.
They finished third at the 2018 World Cup but did not even get as far as the semis this time. Euro 80, when they lost to West Germany, remains their only final.
Belgium’s back three had an average age of 33. Only two of their starting line-up are under the age of 28.
So was this their last real chance?
Kevin de Bruyne, 30 now, gave them a major boost before kick-off when he was passed fit to start.
He forced Donnarumma into a diving save, as did Lukaku. They trailed to two world-class goals before teenager Doku, who replaced the injured Eden Hazard, won a penalty that Lukaku scored.
The Inter Milan striker has scored 24 goals in his last 23 appearances for Belgium.
Football is a game of narrow margins and there were a few what-if moments, mostly involving Lukaku.
It looked for all the world like he was going to level in the second half when De Bruyne rolled the ball across the six-yard box but Lukaku somehow shot straight at defender Spinazzola.
He was inches away again when Nacer Chadli’s deflected cross flew just over his head with an empty net in front of him. That was one of Chadli’s three touches having come on and then off again with injury.
The next World Cup – Qatar 2022 – is only 18 months away so Belgium might have one last chance, although whether Roberto Martinez will still be in charge then is not clear.