The second-seeded Federer beat Mikhail Youzhny of Russia by 6-1, 6-4 to reach his seventh final while the 87th-ranked Haas defeated defending champion Philipp Kohlschreiber 7-6 (5), 7-5 in Saturday's semifinals.
"It's a dream to be able to play him again in the final, he's a good friend of mine," said Haas, the oldest player in the singles draw at 34.
Kohlschreiber knocked out Rafael Nadal on Friday, when 2009 winner Haas defeated third-seeded Tomas Berdych.
After taking the first set on a tiebreaker, recovering from 4-1 down by winning six of the next seven points, Haas broke decisively in the 11th game of the second set to lead 6-5 before wrapping up the match.
"I said it all week, that Tommy's playing fantastic tennis," Kohlschreiber said.
Federer is aiming to win his 75th tour title, only two behind all-time leader John McEnroe.
"That would be nice but I want more titles. If I only get three more, then the years ahead don't look too good for me," Federer joked.
The Swiss broke Youzhny twice to wrap up the first set in 21 minutes. He was in such control that one fan implored him to slow down.
The 16-time Gram Slam champion responded by breaking twice more, before dropping serve to lead 5-3.
Federer wasted three break points in the next game, but sealed the match in the following one with his eighth ace.
"It was nice to come out and play some decent tennis after yesterday's shootout drill," Federer said, referring to his tiebreaker win over Milos Raonic of Canada in the quarterfinals.
The 29-year-old Youzhny has never beaten Federer in 13 attempts.
"Mikhail played a great tournament, and he deserves respect for the way he fought back in the second set," Federer said.
Federer's only final defeat at Halle was to Lleyton Hewitt in 2010. He is bidding for his fifth title of the season after wins in Rotterdam, Dubai, Indian Wells and Madrid.
"(Haas) is very dangerous on grass. So it won't be an easy final for me," Federer said.