The world number five, building up to an assault on an eighth Wimbledon title in July, will now face German fourth seed Alexander Zverev who saw off France's Richard Gasquet 4- 6, 6-4, 6-3.
Federer, 35, has yet to drop a set in Halle, where he was playing his 13th consecutive semi-final.
"I thought it was extremely close, especially that second set. I'm still just very happy how I was able to close it out in the tiebreaker," said Federer who first reached the Halle final in 2003.
However, he was defeated by Alexander Zverev in three sets in the semi-finals at Halle in 2016.