Canada reached its first final since 2009 and will take on defending champion Russia as it looks for its first title since 2007. The Russians used four third-period goals to defeat the Americans in the other semifinal.
"At this point, everyone's focus of mind is on winning," Canada captain Sidney Crosby said. "That'd be great (to win). Hopefully, we can finish it off."
"They had some opportunities, especially early and generated some good chances," said Crosby, who had one assist. "Today's was a good test for us, a big challenge."
The Crosby-led Canadians have been dominating the tournament with a perfect record of nine wins from nine games, and 60 goals.
Hall, the Edmonton Oilers left winger, opened the scoring 8:40 into the game after Jordan Eberle's pass from the right found him in front of the empty net, with goaltender Ondrej Pavelec unable to reach the puck.
"It was a big goal for the team, to silence the crowd and make sure that we get the first one was huge," Hall said. "At this point of the tournament, we know how we have to play no matter who the opponent is. We have to bring our game (in the final)."
Spezza wristed a shot through a defenseman's legs past Pavelec to stretch the lead 9:02 into the second. He tops the scoring charts with 14 points, six goals and eight assists.
"That's why we're here is to try to win," Spezza said. "We came here to try to win the gold medal and now we have a chance to play for it."
Canada also beat the host nation in the group stage, 6-3.
Information from The Associated Press was used in this report.