Zverev beat Richard Gasquet of France in three sets 4-6, 6-4, 6-3 to advance to the final for the second consecutive year.
“I think it was a very tough match,” the 20-year-old German said.
“Richard is in very good form, so it was not easy to beat him but I'm very happy to be through and playing tomorrow Roger in the final is going to be very special.”
Zverev is looking for his first Gerry Weber Open title after losing in last year’s final to compatriot Florian Mayer, while Federer is aiming to win in Halle for the ninth time.
On facing Federer, who he knocked out in the semi-final last year, Zverev said: “He is playing really good tennis, very well.
“It's gonna be a very tough match, hopefully I can prepare myself as best as I can but he is definitely the favourite in that match.”
— Tennis TV (@TennisTV) June 24, 2017
Meanwhile, Federer was under no illusion that he was in for a hard time against a man 15 years his junior.
“He's got home-court advantage”, the 18-time Grand Slam champ said. “He's got a wonderful serve and one of the best backhands in the game… He takes big cuts at the ball, returns very well.
“He's a tough player to play against,” added Federer
“I want to extend this part of my career as much as I can, being careful about details and trying not to make wrong choices that can break this ideal balance which allows me to play in a relaxed way, enjoying and winning at 35 age.”