Canada is set for another gold-medal grudge match against the United States.
Florence Schelling and Switzerland wouldn't let victory come easy for the Canadians, however.
Natalie Spooner scored twice in a three-goal opening period for Canada, which generated plenty of offensive chances after that, but were repeatedly denied by the goaltending of Schelling in what ended up as a 3-1 victory at Shayba Arena.
"They've got a great team and great goalie," Canada forward Meghan Agosta-Maricano told IIHF.com. "We just kept coming. We stuck with our game plan, but they gave us a run for our money. It just goes to show you that women's hockey is getting a lot better and a lot of teams are getting stronger, and that's what we want. It was a great team and I thought their team played well."
Canada and the U.S. will play for gold on Thursday, while Switzerland faces Sweden for bronze. The Americans punched their ticket to the final with a dominant effort earlier in the day, defeating Sweden 6-1 while holding a 70-9 advantage in shots. Canada lost to the U.S. in the inaugural women's gold-medal game at the 1998 Nagano Olympics, but beat the Americans in Salt Lake City in 2002 and Vancouver in 2010.
"We feel like we've prepared all year for this game," Spooner said. "We've played a lot of great games against them. It's going to be another one of those in the final."
Spooner helped the Canadians break through on their fifth shot of the game, 7:29 into the first period, with her first goal of the tournament. She came up with the puck off a faceoff win by Hayley Wickenheiser just outside the Swiss zone, took it down the right side and behind the net, then came all the way out into the high slot before ripping the puck past Schelling.
The Canadians opened things up later in the first period with a pair of goals 23 seconds apart.
Switzerland took a couple of penalties to create a 10-second 5-on-3 for Canada. A crease violation on Spooner wiped out what would have been a goal with four seconds left in the two-man advantage, but Spooner made up for it moments later, tipping in a Catherine Ward shot at 11:10, eight seconds after the first Swiss penalty had expired.
"I've been around the net a lot in this tournament and not been able to put them in, so it was good to finally score two goals," Spooner said.
Melodie Daoust pounced on a loose puck in the crease to beat Schelling for a 3-0 lead, at which point Switzerland called its timeout in an attempt to settle things down.
It worked. Switzerland survived the rest of the first period and received a 5-on-3 of its own early in the second. Like Canada, they eventually capitalized after the first penalty expired.
Canadian goalie Shannon Szabados thought she had the puck covered during a scramble in front, but Jessica Lutz knocked it loose from under her glove. Laura Benz got one swipe at the puck at the side of the net, then Sara Benz worked it back into the crease where Lutz knocked it home at 5:14 for the first Swiss goal.
"When I scored, it was a little bit of a turning point," Lutz said. "It got some momentum, some emotion for us. I think we started to think, 'Okay, we can really do this.' We won that period. Overall, I think the game is a little bit of a disappointment for us. We were trying to win it. But this definitely brings some good, positive energy for the next game."
Alina Muller had a glorious opportunity to bring Switzerland to within 3-2 on another power play later in the period, but Szabados made a tremendous glove save to deny her.
Schelling made a brilliant save of her own with 2:52 left on Marie-Philip Poulin and denied Spooner when she skated in all alone less than a minute later to keep the deficit at two. Poulin also hit the post in the final seconds on a Canada power play.
Schelling stopped all 22 shots she faced in the second and denied Haley Irwin off a shorthanded 2-on-1 in the opening minutes of the third, when Switzerland came up empty on another power play.
Agosta-Marciano thought she had given Canada some breathing room at 7:29 with a spectacular individual effort. She sped through the Swiss defense and put the puck between the pads of Schelling as she crashed into the goalie. The goal was disallowed because it was ruled Agosta-Marciano pushed the goalie into the net along with the puck.
Spooner was denied on her bid for a hat trick off a breakaway with three minutes left in the third, but the Canadians were able to hang on.
"We had a little breakdown in the first for a few minutes," Schelling said. "That basically killed our chances of another victory today. We fought until the very end, though, so it was a great team effort. We can be very proud, although I'm sure the girls are a little disappointed. We didn't have any pressure. We didn't have anything to lose."