Ronaldo opened the scoring in Lyon with a thumping 50th-minute header that saw him tie France great Michel Platini’s record of nine goals at Euro finals, before setting up Nani for Portugal’s second goal as Fernando Santos’ side secured their first win inside 90 minutes at the tournament.
Portugal now go on to Sunday’s showdown at the Stade de France with either Germany or hosts France in what will be their first major final since Euro 2004, when a 19-year-old Ronaldo was left in tears after the hosts were beaten 1-0 by Greece.
With Aaron Ramsey absent, there was even more onus than usual on Gareth Bale to make things happen for Wales and he was the stand-out player in a drab first-half, stinging Portugal goalkeeper Rui Patricio’s palms moments after sending a shot into the stands.
Bale’s Real Madrid teammate Ronaldo then stole the show at the start of the second period, as he leapt highest to power a header past Wales goalkeeper Wayne Hennessey for the opener in Lyon.
The Portugal captain then turned provider three minutes later, albeit inadvertently, as his mishit shot was prodded into the net by his former Manchester United teammate, Nani.
Wales coach Chris Coleman then rang the changes, but it was Bale who twice worked Rui Patricio with swerving efforts from range, while Portugal also missed chances at the other end as the seconds ticked away.