Roared on by a sold-out Dragao Stadium in Porto, Portugal dominated the game from the start and went 2-0 up in the first half after Otavio scored one goal and created another for Diogo Jota.
But Fernando Santos's side were pegged back by a Burak Yilmaz goal in 65th minute that put the Portuguese fans on the edge of their seats as Turkey started to threaten.
Defender Jose Fonte then fouled Enes Unal inside the area in the 85th minute to concede a penalty but Yilmaz fired his effort high over the bar.
Portugal substitute Matheus Nunes then relieved the pressure on the hosts in added time with their third goal from a counter attack.
After missing out on automatic qualification in November, Portugal will now host North Macedonia on Tuesday with the winner qualifying for the 2022 World Cup in Qatar.
Portugal would have been expecting to face Italy, but they were shocked in a 1-0 defeat to North Macedonia in the other semi-final in Palermo, depriving fans of a highly anticipated face-off between the last two European champions.
Portugal started strongly, scoring twice in the first half with the result looking like a foregone conclusion going into the break.
Brazilian-born Porto midfielder Otavio, a surprise inclusion in the starting team, provided Portugal's main attacking threat.
He scored from a rebound in the 15th minute after a Bernardo Silva shot came back off the post and just before halftime, he crossed from the right flank for Jota to aim an unstoppable header into the net. But Portugal took their foot off the gas in the second half and allowed the visitors to get into the game.
Yilmaz scored following a one-two with Cengiz Under and had the chance to equalise from the spot after the video assistant referee spotted a foul in the penalty area, but sent his effort soaring high over the bar. Agencies
Also Watch: