Federer, 31 and ranked third in the world, will face Mikhail Youzhny in today’s final after the Russian beat French second seed Richard Gasquet 6-3, 6-2.
It will be Federer’s eighth Halle final having won the title five times at this pre-Wimbledon warm-up.
Federer said that it had been terrific to have such a hard match after his quarter-final which had seen him breeze through 6-0, 6-0 against Haas’s compatriot Mischa Zverev.
“It was a great match for me to play and to win. Tommy can play really well here and we saw it last year. So it is a big win for me,” he said.