A closely fought contest at Estadio do Dragao was settled by the individual brilliance of the host nation's captain, who opened the scoring in the first half before striking twice in two minutes just as extra time looked likely.
Switzerland looked the better team for long spells and deservedly drew level after half-time thanks to Ricardo Rodriguez's penalty, which was awarded in remarkable circumstances after a Portugal spot-kick was overturned by VAR.
53 - Cristiano Ronaldo's hat-trick against Switzerland was his 7th for Portugal and his 53rd for club and country. Ridiculous. pic.twitter.com/xkmewmQsut— OptaJoe (@OptaJoe) June 5, 2019
Xherdan Shaqiri and Haris Seferovic each missed presentable openings as Switzerland started the stronger.
They were made to rue those misses 25 minutes in. Ronaldo, having won a free-kick thanks to a robust challenge from Kevin Mbabu, fired the ball past a messy wall and into the bottom-right corner beyond the static Yann Sommer.
There was a further chance for Seferovic, whose half-volley from Mbabu's cross clipped the crossbar, and Joao Felix spurned an opportunity to mark his debut with a goal when Ronaldo played him through.
Switzerland drew level 12 minutes after the restart, though - and in extraordinary fashion.
Portugal were awarded a penalty after Bernardo Silva was clearly fouled by Fabian Schar, but referee Felix Brych overturned the decision and awarded a spot-kick to Switzerland as, earlier in the same passage of play, Nelson Semedo made the slightest of contact with Steven Zuber and tripped him in the box. Rodriguez dispatched the ball from 12 yards despite Rui Patricio's best efforts.
There was a further blow to Portugal when Pepe went off with an arm injury, and Switzerland began to look the most likely to snatch a winner, with Shaqiri causing particular problems and Mbabu setting up chances for Zuber and Renato Steffen.
But Ronaldo came to his side's aid when it mattered most. He struck his second goal with a low first-time finish from a Silva cut-back, and he added a third in the 90th minute, racing into the penalty area, bamboozling Manuel Akanji and rifling past Sommer.
What does it mean? Portugal are favourites with Ronaldo on form
Portugal were outperformed at times by Switzerland but, with Ronaldo in this sort of mood, they are the favourites to win almost any match. The Juventus star might find things tougher against the English or Dutch defences, but there is little reason to bet against him making his mark in the final.
Ronaldo still setting the standard
This was not his finest all-round display by any means, but when you can score goals like that, it rarely matters. This was his seventh international hat-trick and 53rd of his career, showing he remains the man around whom Fernando Santos must build his team.
UEFA Nations League (@UEFAEURO) June 5, 2019
Felix freezes in the spotlight
The much-hyped 19-year-old struggled badly to make an impact on his international debut, sending his only half-chance wildly over the bar.
Key Opts Facts
- Portugal have won five of their last eight games against Switzerland (D1 L2), despite conceding in six of those matches.
- Portugal have lost just one of their last 16 games across all competitions (W6 D9) and are unbeaten since a 2-1 defeat against Uruguay in the 2018 World Cup (P9 W4 D5 L0 since).
- Cristiano Ronaldo's 53rd hat-trick for club and country (seven for Portugal) ended his four-game goalless streak at international level. He has now scored five goals in six previous semi-final appearances for Portugal (including World Cup, Euros, Confederations Cup and Nations League).
- Two of Ronaldo's last five goals for Portugal have come from direct free-kicks; only two of his previous 52 goals prior to this were scored in the same manner.
- Five of Ricardo Rodriguez's last six goals for Switzerland have come from the penalty spot, including each of his last three.
Portugal are back in Porto for the final on Sunday. Switzerland will meet the loser of Netherlands' clash with England in the third-place play-off in Guimaraes.