A 43rd-minute strike from Thorgan Hazard secured the win for Roberto Martinez‘s team, who survived plenty of pressure from the Portuguese in the second half.
As it happened: Belgium vs Portugal
But with the finishing touch missing, it was the end of the road for Cristiano Ronaldo and a Portugal team who had triumphed in Paris five years ago.
Portugal began brightly and Diogo Jota wasted a great chance in the sixth minute, dragging his shot wide after Renato Sanches had broken from midfield and found him in a promising position on the left.
🇧🇪 Belgium = quarter-finalists! 🎉🎉🎉#EURO2020 https://t.co/LjmJMwlMQk
— UEFA EURO 2020 (@EURO2020) 1624828180000
Ronaldo then tested Belgium keeper Thibaut Courtois with a low-struck free kick as Fernando Santos’s team continued to apply pressure.
But Belgium grew into the game with Kevin De Bruyne increasingly influential and three minutes before the interval they grabbed the lead.
A smart passing move ended with Thomas Meunier feeding Thorgan Hazard, whose wickedly swerving shot flew past the wrong-footed Portugal keeper Rui Patricio.
🇵🇹 EURO 2016 winners Portugal exit at the round of 16 stage…#EURO2020 https://t.co/DdRhxyAP2O
— UEFA EURO 2020 (@EURO2020) 1624827716000
Belgium suffered a blow when De Bruyne limped off with an injury three minutes after the break and Santos sought to breathe life into his side’s attack by introducing Bruno Fernandes and Joao Felix from the bench.
Ronaldo, cutting in from the right, did well to find Jota in the box but again the forward’s effort was off target but Belgium were struggling to contain their opponents.
Belgium’s attempts to counter were increasingly rare and Portugal turned up the heat in the final 10 minutes as they searched desperately for an equaliser.
Courtois punched away a thundering Ruben Dias header from a corner and then Raphael Guerreiro struck the post with a sweet first-time shot from the edge of the box.
Deep in added time, Portugal created one final opportunity but Felix’s drive flashed just wide of Courtois’s right-hand post.
Belgium will face Italy, who beat Austria 2-1 on Saturday, in Munich on July 2. The Italians are unbeaten in their last 31 matches.