He defeated the 43rd-ranked Pierre-Hugues Herbert of France 6-3, 6-3, and Goffin brought an end to Matteo Berrettini's eight-match winning streak with a 7-6 (4), 6-3 win in the semifinals on Saturday.
Federer had one of his easier matches on his way to his 13th final in Halle, converting three of eight break opportunities without facing any himself.
Goffin had lost six consecutive tour-level semifinals before he saved all three break points he faced to beat Berrettini -- who won the Stuttgart Open last Sunday -- in 1 hour, 37 minutes. Berrettini had won 83 of his previous 84 service games before their semifinal.
Goffin has won only one of his eight previous meetings with Federer, who lost last year's final at the grass-court tournament to Borna Coric.
Federer already has the best grass-court record in the Open era with 18 titles, and the 37-year-old can set a personal record with his 10th at a single event in Halle.