Ett effektivt Danmark tog ledningen med 2–0 efter den första perioden. Malmö-backen Markus Lauridsen satte dit 1–0-pucken innan Peter Regin utökade med ett mål i numerärt underläge.
Maxime Comtois reducerade i början av den andra perioden men närmare än så kom aldrig Kanada. Mathias Bau Hansen satte dit 3–1 som blev det matchvinnande efter att Ryan Graves reducerat med fyra minuter kvar.
LÄS MER: Tjeckien besegrade USA – Matej Blumel avgjorde med matchens enda mål
Den danska segern ikväll tar de upp till en tredjeplats i grupp A och det kan nu bli Tre Kronor som står för kvartsfinalmotståndet för Danmark.
Tre Kronor är inför morgondagen på en andraplats i grupp B samtidigt som Danmark är trea i grupp A. Skulle dock Danmark förlora mot Slovakien samtidigt som Kanada inte förlorar mot Frankrike så missar Danmark kvartsfinal.
Kanada–Danmark 2–3 (0–2, 1–0, 0–1)
Mål, KAN: Maxime Comtois, Ryan Graves
Mål, DAN: Markus Lauridsen, Peter Regin, Mathias Bau Hansen
Skott: 31–24 (12–4, 10–9, 7–9)
Övriga resultat/VM 23 maj
Kazakstan – Italien 5–2
USA – Tjeckien 0–1
Österrike – Storbritannien 4–3
Allt på Hockeynews PLUS för bara 69kr. Skaffa PLUS. Säg upp när du vill.