Bud Holloway and Stefano Giliati scored first-period goals for Canada (1-1-0-0) and Alexandre Giroux made it a three-goal game early in the second period. Pascal Pelletier scored midway through the third period for Medvescak Zagreb, a Croatian team from Russia's Kontinental Hockey League.
Medvescak Zagreb (0-1-0-0) pulled its goalie late in the game but couldn't get another puck past Canadian netminder Drew MacIntyre.
"I thought the last 10 minutes we didn't give them anything," said Canada coach Guy Boucher. "That was pretty impressive and showed the dedication of our players. They were paying the price defensively and our goaltending was solid also.
"So I think it was a really good team effort and we'll continue to grow."
Calvin Heeter made 16 saves for Medvescak Zagreb while MacIntyre stopped 24 shots for Canada.
In Saturday's early game, Ufa defeated Jokerit Helsinki 4-3.
Canada, which opened the tournament Friday with a 2-1 loss to host HC Davos, will get a day off Sunday. Canada's position in the three-team Cattini Group standings will be determined after Sunday's game between HC Davos and Medvescak Zagreb.
The Croatian side has 15 Canadian-born players in its lineup and is guided by head coach Doug Shedden, who served as Canada's coach at the last two Spengler Cup tournaments.
The quarter-finals begin Monday. Canada has appeared in 10 of the last 13 Spengler Cup finals and last won the tournament in 2012.
HC Geneve-Servette of Switzerland is the defending champion.