Cristiano Ronaldo’s stunning hat-trick fired hosts Portugal into the Nations League final after a 3-1 win over Switzerland at the Estadio do Dragao.
The Juventus forward opened the scoring with a fine free-kick after 25 minutes.
Switzerland, though, equalised through a controversial penalty in the 56th minute.
German referee Felix Brych had initially awarded a spot-kick to Portugal, before going back to check a previous incident in the other area.
Following a long delay while he watched replays on the pitchside monitor, Switzerland were given a penalty for what was ruled as a foul by Nelson Semedo on Steven Zuber. AC Milan defender Ricardo Rodriguez converted from 12 yards.
Ronaldo, though, had the final say when he struck twice during the closing three minutes to complete his treble.
Bernardo Silva cut the ball back for the Juventus man to drive past Yann Sommer and Ronaldo then made sure of a place in Sunday’s final against either England or Holland with another fine low finish.
Along with Ronaldo in the Portugal attack, Manchester City’s Silva was also in the starting XI along with Wolves goalkeeper Rui Patricio and midfielder Ruben Neves.
Switzerland, who finished ahead of World Cup runners-up Belgium in their group, included Xherdan Shaqiri of Liverpool along with Arsenal midfielder Granit Xhaka and Newcastle defender Fabian Schar.
Shaqiri, who was an unused substitute in the Champions League final against Tottenham, had an early chance when through on goal, but Patricio made a smart reaction save with his feet.
In the 14th minute, Silva played Ronaldo into the edge of the Swiss penalty area, but the former Real Madrid man dragged his shot wide.
There was, though, nothing wrong with Ronaldo’s radar when he stepped up for a 25-yard free-kick after being tripped by Kevin Mbabu – and promptly fired the ball through the dispersing wall and past the wrong-footed Swiss goalkeeper.
Haris Seferovic continued to cause Portugal problems, and the Benfica forward was unfortunate not to equalise just before half-time when he hooked the ball up onto the top of the crossbar with Patricio beaten.
At the other end, Benfica teenager Joao Felix, who has attracted admiring glances from the biggest teams in Europe, fired over after being picked out by Ronaldo in the Swiss penalty area.
The big talking point came on 52 minutes when Silva had been brought down by Fabian Schar, but the referee took play back to a previous nudge by Semedo on Zuber, eventually giving Switzerland a penalty following a lengthy VAR check which Rodriguez squeezed past Patricio.
Portugal defender Pepe was forced off just after the hour with what looked like a shoulder problem following an awkward fall.
The tempo dropped heading into the closing stages, with both sides perhaps sensing the possibility of extra-time.
Ronaldo, though, settled matters with a superb late double after first chasing down Silva’s pass and then completing his hat-trick after shifting inside Manuel Akanji at the edge of the area to lash the ball into the bottom corner.