World number five Zverev, who lifted the Rome trophy in 2017, battled back to see off the Chilean 1-6, 7-6 (7/4), 6-2 in their semi-final.
The 26-year-old Tabilo had shocked Novak Djokovic in the third round and the 32nd-ranked player showed little fear of Zverev until he began to play more passively in the second-set tie-break.
Third seed Zverev then raced through the decider to make the Rome final for the third time.
“I was just hanging on in the second set. I brought my energy up. I was just hanging on and waiting and the patience was kind of good today,” Zverev said on the court.
“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. He gave me no rhythm and I am happy I turned it around in the tie-break and ran away in the third set.”
In Sunday’s final, he will take on either another Chilean Nicolas Jarry, or Tommy Paul of the United States.
By making Sunday’s championship match, 27-year-old Alexander Zverev has tied Becker’s record for the most Masters finals by a German since the series began in 1990.