New York Islanders center John Tavares and Edmonton Oilers Jordan Eberle both collected a goal and an assist, while Canadian goalie Cam Ward picked up an assist and produced 28 saves to add all three points to their team's balance.
The Swiss started in a brave mood and clinched the lead at 1:40 as Goran Bezina's pass from the blue line slid through the traffic to Damien Brunner, who swept it into an unguarded post.
Canada replied positively and began peppering Swiss goalie Tobias Stephan with shots to clinch a 2-1 lead after Tavares and Eberle both scored.
Bezina pulled the scores level 3:49 into the third but Canada skipper Ryan Getzlaf netted his team's winning goal firing the puck into the net with a slap shot after beating Swiss defence on a breakaway with 11:58 to go.
"When we face Switzerland at the world championships it's always a hard-fought tough game," Canada's manager Brent Sutter said.
"The Swiss team opened the game with a well-structured hockey playing with great discipline. We came back with early goals in the second and third and it helped us a great deal to win the match."