Schweiz inledde den andra semifinalen starkast och efter att ha öst puckar mot det kanadensiska målet kom till slut utdelningen också.
Svenskbekantingen Kevin Fiala stod för en riktig fullträff när han skickade in 1-0 bakom Jordan Binnington.
Bara två minuter senare var det dags igen – och Fiala var involverad även denna gång. Ett stenhårt skott, en styrning av Roman Josi och sist på pucken var Nino Niederreiter innan den till slut nådde nätet.
Straffdrama
Därefter tog Kanada över allt mer och i den andra perioden skapade Brandon Tanev spänning i matchen igen. Efter en tilltrasslad situation gled pucken till slut över mållinjen och Kanada inledde ett frenetisk jagade – som gav resultat.
Med två minuter kvar av ordinarie tid styrde John Tavares in 2-2 från en svår vinkel och tog i och med det matchen till förlängning.
Efter mållösa minuter krävdes straffar för att avgöra semifinalen. Där klev Leonardo Genoni fram med flera viktiga räddningar och tog Schweiz till final.
Det innebär att Sverige ställs mot Kanada i söndagens bronsmatch, medan det blir Schweiz mot Tjeckien i finalen.