A day after losing to 60-1 outsider Germany in the semifinal, the nine-time Olympic champion defeated the Czech Republic 6-4 to salvage some plaudits from Pyeongchang.
Canada is the winner of three of the past four Olympic titles, and the semifinal capitulation was a severe shock to this hockey-mad nation.
But this was a team lacking any of its National Hockey League stars
, because of a scheduling dispute with franchise owners, and its redemption came in bronze to add to recent golds from Sochi and Vancouver.
"We didn't want to finish in that fourth-place position; get the third, get the bronze and it's something you'll cherish forever," Andrew Ebbett , who scored twice for Canada, told the Reuters news agency.
Referring to the defeat by Germany, he added: "Personally I think I'll probably be thinking about that game last night for a long, long time.
"I still can't explain what happened. We just didn't have it in the first period. Germany played a full 60 minutes and we played 25-30. It wasn't enough and man, it would have been fun to play Russia for the gold medal -- what every Canadian dreams of."
Canada raced 3-1 ahead in the first period against the Czech Republic but couldn't extend its advantage in the second before surging 6-2 clear early in the third.
But some anxious moments followed as the Czechs clawed back two goals with two minutes to go despite being a man down.
Canada, though, hung on to avoid a first Games without an ice hockey medal since Nagano in 1998, when the Czech Republic won gold.
The men's hockey final will be held on Sunday, the final day of the Olympics, between Germany and the Olympic Athlete from Russia team.
No German team has reached the podium in ice hockey since West Germany took bronze at the 1976 Winter Games in Innsbruck.