Seeking a 10th career title in Basel, the 38-year-old Federer will play 20-year-old Alex de Minaur in Sunday's final.
"That's what you do with a home court advantage," said Federer, who has reached the final 13 straight times he has played the Swiss Indoors. "They enjoy when I'm playing good tennis and it pushes me to play even better."
De Minaur, a wild card, advanced by beating big-serving American Reilly Opelka 7-6 (2), 6-7 (4), 7-6 (3) in a meeting of unseeded players.
Both finalists have won three titles this season, though for De Minaur these are the only three of his career so far while Federer is chasing his 103rd.
Serving for the match, Federer saved the only break point he allowed the seventh-ranked Tsitsipas.
Federer clinched two points later with a leaping volleyed winner approaching the net after Tsitsipas struggled to handle a strong first service.
Top-seeded Federer broke the Tsitsipas service at 2-2 in the first set, and created set point chances with a delicate angled drop volley for a winner. He clinched by firing an ace down the middle.
Federer broke again to begin the second set, taking his chance with a powerful forehand winner down the line.
Victory lifted Federer to a 50-8 record in 2019. It's his third straight year of 50 wins since an injury-ravaged season ended early in 2016.
De Minaur, ranked No. 28, has won all four of his semifinals this season. He went on take the title each time, at Sydney, Atlanta, and Zhuhai, China.
He also improved to 4-0 this season against the 37th-ranked Opelka, who stands at 6-foot-11 (2.10 meters).
Opelka hit 26 aces to top 1,000 for the year and overtake John Isner for the ATP lead.
"Probably the most important thing is not to get frustrated," De Minaur said. "You've got to know that he's going to serve at least 40, 50 aces against you."
Federer and De Minaur, who was born in February 1999, four months after the Swiss great played his first match at Basel, have never played each other on tour.