Match ends, Portugal 2, Belgium 1.
Belgium suffered defeat in their first game since the Brussels attacks as Cristiano Ronaldo ended a run of four internationals without a goal.
Portugal took control when Nani finished confidently midway through the half after getting behind the defence.
Ronaldo's glancing header doubled the lead in Leiria, which staged the game after it was moved from Belgium amid security fears.
Romelu Lukaku headed home a cross from brother Jordan but Portugal held on.
The visitors wore T-shirts during the warm-up that carried the message "in memory of all victims".
Portugal - who are grouped with Iceland, Hungary and Austria at Euro 2016 - were inspired by the elusive Ronaldo, who teased Belgium with his trickery and pace.
Both countries will now play three more friendlies before Euro 2016.
Belgium, who were unbeaten in five matches before kick-off, face Switzerland, Norway and Finland in the space of eight days, while Portugal meet Norway, England and Estonia.
- 1Rui Patrício
- 21Cédric Soares
- 4José Fonte
- 15André GomesSubstituted forWilliam Carvalhoat 74'minutes
- 23Adrien SilvaSubstituted forRenato Sanchesat 45'minutes
- 13DaniloBooked at 85minsSubstituted forAlves Gomesat 87'minutes
- 16João MárioSubstituted forBernardo Silvaat 45'minutes
- 17Almeida da CunhaSubstituted forMacedo Lopesat 61'minutes
- 7Cristiano RonaldoSubstituted forRicardo Quaresmaat 61'minutes
- 2Bruno Alves
- 8Bernardo Silva
- 9Macedo Lopes
- 10Alves Gomes
- 11Vieira de Freitas
- 14William Carvalho
- 18Ferreira Silva
- 20Ricardo Quaresma
- 22Dos Reis Carvalho
- 24Renato Sanches
- 7GilletSubstituted forJ Lukakuat 59'minutes
- 15DenayerSubstituted forBoyataat 86'minutes
- 14MertensSubstituted forBatshuayiat 67'minutes
- 8FellainiSubstituted forDembéléat 80'minutesBooked at 85mins
- 5J Lukaku
- 21T Hazard
- Stephan Klossner
- Shots on Target
Second Half ends, Portugal 2, Belgium 1.
Substitution, Portugal. Danny replaces Danilo Pereira.
Substitution, Belgium. Dedryck Boyata replaces Jason Denayer.
Mousa Dembélé (Belgium) is shown the yellow card.
Danilo Pereira (Portugal) is shown the yellow card.
Mousa Dembélé (Belgium) wins a free kick in the defensive half.
Foul by Danilo Pereira (Portugal).
Attempt missed. Ricardo Quaresma (Portugal) right footed shot from the centre of the box misses to the left. Assisted by Cédric Soares.
Corner, Belgium. Conceded by Pepe.
Attempt missed. Radja Nainggolan (Belgium) right footed shot from outside the box is close, but misses to the right. Assisted by Axel Witsel.
Substitution, Belgium. Mousa Dembélé replaces Marouane Fellaini.
Attempt missed. Raphael Guerreiro (Portugal) left footed shot from outside the box misses to the left. Assisted by Danilo Pereira.
Hand ball by Marouane Fellaini (Belgium).
Attempt saved. Ricardo Quaresma (Portugal) right footed shot from outside the box is saved in the centre of the goal. Assisted by Renato Sanches.
Substitution, Portugal. William Carvalho replaces André Gomes.
Attempt missed. Raphael Guerreiro (Portugal) left footed shot from outside the box is just a bit too high from a direct free kick.
Foul by Thomas Vermaelen (Belgium).
Bernardo Silva (Portugal) wins a free kick in the attacking half.
Attempt missed. Axel Witsel (Belgium) right footed shot from outside the box is close, but misses to the left.