Alexander Zverev woke up after crashing in the opening set to end the upset hopes of charging Chilean Alejandro Tabilo 1-6, 7-6 (4), 6-2 to reach the finals of the Rome Masters on Friday.
Zverev will be hoping to repeat as Foro Italico champion after winning the trophy in 2017 but losing the little match to Rafael Nadal a year later.
The German ranked fifth will be playing his 11th career final at the elite Masters 1000 level.
He has now tied compatriot Boris Becker for most finals by a German at this level since the series began in 1990.
Zverev, last Top 20 player in the field at an event which lost Rafael Nadal and Novak Djokovic early and which was missing the injured pair of Jannik Sinner and Carlos Alcaraz, will play for the trophy on Sunday against either American Tommy Paul or Nicolas Jarry, second Chilean in the Rome mix,
Zverev made hard work of the opening set, dropping serve twice as Tabilo, winner over Djokovic in the third round, used his fearsome forehand to good effect.
The third seed began to turn the tables against the No. 32, squaring the match at a set each by winning the second set in a tiebreaker and sweeping the third set to reach the final in two and a quarter hours.
“He hit me off the court in the first set and I did not play well at all, but he was a big reason why. I’m happy I turned it around in the tie-break and ran away in the third set.
“I was just hanging on in the second set. I brought my energy up. I was really just hanging on and waiting and the patience was kind of good today.”
Zverev will seek his sixth Masters title after advancing with 27 winners to the 28 of his opponent.
“The one thing I didn’t do well at the beginning was serve well. That was something I think doesn’t help,” he said.
“I’m happy to be in the final; winning is the most important.”
If he wins a second title here, Zverev’s ranking will lift to fourth in the world