The match, which was rearranged to take place in Leiria after last week's terror attacks in Brussels, got off to a slow start as Belgium probed patiently in the opening 10 minutes.
The deadlock was broken in the 20th minute as Nani collected the ball in the inside-left channel before driving at goal and lifting a curled shot over Courtois into the net.
Belgium, winners of their last seven friendlies and top of FIFA's rankings, were causing few problems at the other end, with Rui Patricio keeping out Dries Mertens's long-range try, and soon it was 2-0 to the hosts.
Mario was the provider, curling over an inviting cross that Cristiano Ronaldo timed his run perfectly to meet and flick home for his 56th international goal.
At the start of the second half Ronaldo and Mertens missed the target at either end before Belgium halved the deficit through Romelu Lukaku, who headed home a cross from his younger brother Jordan Lukaku from close range.
Belgium struggled to create much more in the final half-hour and it was Portugal in fact that went closest to the fourth goal of the game when Ricardo Quaresma shot high and wide from 12 yards.