Goffin came from behind to win his match, with scores of 2-6, 6-3, 6-4, while Dimitrov won with scores of 4-6, 6-0, 6-3.
The final will take place following the doubles' match. The session will not start before 6 p.m. GMT.
Goffin's Cinderella run appeared to be over after the first set of Saturday's slate of matches, but once again, the Belgian found a way to turn a match on its head and beat Federer for the first time in seven tries.
The World No. 2 was in complete control of the first set but appeared to lose a step after that, and Goffin made the right changes to his game, playing with more aggression and forcing the 36-year-old to move.
He had two breaks in the second set and one in the third, surviving a comeback with some excellent holds. Two aces toward the end of the match were key, delivering the 26-year-old perhaps the biggest win of his career.
His opponent was full of praise after the match:
While some fans and pundits were disappointed with Federer, the veteran still had a phenomenal year, winning far more silverware than most would have predicted.
Record's Jose Morgado listed his achievements in 2017:
Goffin won his first ATP World Tour 500 event in Japan earlier this year, pushing him into the top 10, but few will have expected him to make it this far in London―or become just the sixth man to beat Federer and Rafael Nadal in the same tournament.
In the day's second match, big-serving Dimitrov and Sock were expected to play out a fast and furious affair. The Bulgarian opened up a 3-0 lead early but made a couple of key mistakes that allowed his opponent back into the set.
He would live to regret those errors, as Sock broke to claim the ninth game and served out the set for the early advantage. Tennis TV noted there was little to separate the two:
Dimitrov started the second set the same way he did the first, holding serve before grabbing a break, but he pushed his advantage the rest of the way. In no time, he was up 5-0, and he closed the deal soon after.
Sock stopped his run with a hold early in the third set, setting up a tense finale. The two traded blows until a huge eighth game, in which Dimitrov finally found the crucial break, helped in large part by a double-fault from his opponent. The Bulgarian finished things off in the following game.
Dimitrov has already beaten Goffin earlier this week, crushing the Belgian 6-0, 6-2 on his way to the semi-finals.