The hosts started aggressively, pressed high up the pitch and seemed to be in control of the match until the defence was caught napping by Turkey winger Sercan Sararer who set up Umut Bulut for a tap-in after 35 minutes.
Portugal striker Hugo Almeida did little to appease the sell-out 65,000 crowd at Estadio da Luz when he misplaced a pass to a team-mate when it seemed easier to shoot.
The Turks, who failed to qualify for the Euros, were hardly brilliant but did at least take their chances.
Bulut added salt to Portugal's wounds by drilling in the second goal in the 52nd minute after taking advantage of a careless ball from Miguel Veloso.
Portugal pulled one back five minutes later after a flowing move ended in a a fine finish from Nani and captain Ronaldo then missed from the spot in the 65th minute following a foul on right-back Miguel Lopes.
Many home fans started drifting home before Turkey's third goal came when Ricardo Costa's goal-line clearance rebounded off Pepe into the net.
The defeat means Portugal will start Euro 2012 after a run of three matches without a win.
They were also held 0-0 by Macedonia last week and drew with Euro co-hosts Poland in February.
Portugal have been drawn in Group B together with Germany, Netherlands and Denmark.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.