Belgium, who are number one in the FIFA world rankings, were missing half their regulars and this gave fringe players a chance to stake a claim for Euro 2016 squad berths. In the event, few excelled, with keeper Thibaut Courtois the stand out player.
Injuries stripped them of captain Vincent Kompany and fellow defender Jan Vertonghen, attacking midfielder Kevin De Bruyne, playmaker Eden Hazard and striker Christian Benteke.
With right back Toby Alderweireld also out due to illness, a makeshift Belgian defence struggled to counter Portugal's attack led by Cristiano Ronaldo.
Portugal, who lost 1-0 at home to Bulgaria on Friday with Ronaldo missing a penalty, forced Courtois to make four fine saves inside the first 15 minutes.
However, he could do little to keep out a shot from Nani in the 20th minute and a Ronaldo header 20 minutes later.
Momentum changed on the hour mark, when Ronaldo and Nani left the field and Belgium's Jordan Lukaku came on at left back. Within minutes he supplied the cross from which brother Romelu scored, but Portugal held on for victory.
Belgium warmed up in grey tops with "In memory of all victims" on the front and played in white shirts with the Belgian flag in the middle and black armbands.
"The events of March 22 are naturally in the minds of the players, but when the referee blows the match will start and we'll go for it," coach Marc Wilmots had said before the game.
Belgian and Portuguese players stood mixed together as they sang the two national anthems.
(Reporting By Philip Blenkinsop, editing by Pritha Sarkar)