Cristiano Ronaldo hit a hat-trick as Portugal withstood a huge moment of VAR controversy to beat Switzerland 3-1 and reach the Nations League final on home soil in Porto.
Ronaldo's free-kick opened the scoring midway through the first half, but the Swiss levelled when the referee overturned his decision to award Portugal a penalty to give a spot-kick at the other end after a VAR review, and Ricardo Rodriguez levelled.
The game seemed destined to head for extra time, but as ever Ronaldo stepped up to be the hero with two expert finishes in the final two minutes.
The hosts will now face England or the Netherlands, who meet on Thursday, in Sunday's final.
Portugal made it to the last four without their all-time record goalscorer as Ronaldo took a hiatus from international football to concentrate on his first season at Juventus.
However, the five-time world player of the year returned to the national team in March and was always likely to be the centre of attention on a day when it was reported a rape lawsuit against him had been dropped.
A lawyer for the American woman who claimed she was sexually assaulted by Ronaldo – accusations he has strongly denied – later dismissed that report, saying the lawsuit had not been dropped.
In Porto, Ronaldo pulled his first big chance wide early on, but made the breakthrough on 25 minutes.
Swiss goalkeeper Yann Sommer was fooled by the wicked swerve as Ronaldo's free-kick from the edge of the area flew into his bottom left-hand corner.
DEBUT FOR FELIX
The Portugal captain is, though, no longer his country's only star name with Bernardo Silva starring for Manchester City where he could soon be joined by Joao Felix.
City are reportedly set to pay Felix's 120-million-euro ($135 million) buyout clause from Benfica, but the 19-year-old missed a glaring chance to mark his international debut with a goal just before the break as he blasted over from Ronaldo's pass.
Switzerland had posed a threat themselves in the first half with Xherdan Shaqiri, fresh from winning the Champions League with Liverpool, particularly lively.
However, it took the help of VAR to get them back in the game in a moment of huge controversy just before the hour mark.
Portugal thought they were the ones with the chance to extend their lead from the penalty spot when referee Felix Brych pointed to the spot.
However, the German referee then reviewed a Swiss penalty appeal he had waved away for a foul by Nelson Semedo on Steven Zuber and overturned his initial decision.
Rodriguez drilled home the resultant spot-kick much to the fury of the home supporters at the Estadio do Dragao.
The Swiss could then have gone in front when Benfica forward Haris Seferovic headed just wide.
But Portugal's greater star power eventually shone through as Silva squared for Ronaldo to drill home his second of the night.
Moments later the hosts sealed their place in the final on the counter-attack as Ronaldo curled into the far corner to take his tally of international goals to 88.