Hazard netted with a swerving long-range effort three minutes before the break of a hard-fought Euro 2020 last-16 clash in Seville.
Portugal rallied after the break and hit the post through Raphael Guerreiro in a rousing finish but Belgium, who lost Kevin De Bruyne and Eden Hazard to injury, held on and will face Italy in the last eight.
Meanwhile, the Czech Republic produced the shock of the day as they struck twice in the second half to dump out 10-man Holland 2-0 in Budapest.
Holland completely crumbled after Matthijs De Ligt was sent off for denying a goalscoring opportunity with a handball after 55 minutes.
The Czechs took full advantage and set up a quarter-final date with Denmark with goals from Tomas Holes and Patrik Schick after 68 and 80 minutes respectively.
No new record for Ronaldo yet
Portugal's talismanic captain Cristiano Ronaldo remains, for now at least, the top scorer at the tournament with five goals – despite his failure to score against Belgium and his side's exit. The defeat also denied him the chance to become the all-time record goalscorer in international football during this tournament. He will now have wait until next season to eclipse the 109 goals of Iran's Ali Daei, which he equalled with two penalties against France on Wednesday.
Anxious wait for Belgium pair
Belgium may be the world's top-ranked side but they looked nervy in the closing stages against Portugal and needed to ride their luck to come through. They will be anxious for a positive update on injuries suffered by De Bruyne and Eden Hazard. Manchester City playmaker De Bruyne hurt his ankle in a challenge by Joao Palhinha and missed most of the second half. Hazard went off with a muscular problem late on. Manager Roberto Martinez said they would "need 48 hours to find out the extent of the injuries".
Post of the day
UEFA deny ban on flags
UEFA denied reports it had banned rainbow flags from the Puskas Arena and the fanzone in Budapest.
This came after a number of supporters reported having flags confiscated at the venues as Holland played the Czech Republic in the Hungarian capital.
UEFA insisted this was not its doing and pointed out rainbow flags were welcome. The management of venues, the European governing body said, was in the control of "local authorities".
"UEFA would like to clarify that it has not banned any rainbow-coloured symbols," a statement read.
Quote of the day
Croatia v Spain (Round of 16, June 28, Copenhagen, 1700 BST)
France v Switzerland (Round of 16, June 28, Bucharest, 2000 BST)