Bara efter knappt fyra minuter förde Nicklas Jensen upp Danmark i ledning genom sitt femte mål i turneringen.
Efter det var Tjeckien det dominerande laget för det mesta och i den tredje perioden fick de till slut in kvitteringen.
Filip Chytil hittade forwardsstjärnan Dominik Kubalik som bara behövde sätta in pucken.
Tjeckien fortsatte sedan att pressa, men de fick inte in pucken under ordinarie speltid.
Firade i förlängning
I förlängningen firade Tjeckien sedan segern då de trodde att Filip Hronek hade skjutit in segermålet i numerärt överläge. Men efter en lång videogranskning underkändes målet för en knapp offside.
I förlängningens sista sekunder var Tjeckien nära mål igen, men matchen gick hela vägen till straffar.
Där imponerade tjeckerna som satte alla sina straffar. Bägge lagen bytte också målvakt under straffläggningen.
– Det här har jag inte varit med om, säger SVT Sports expert Jonas Andersson.
Danmark är utslaget och för Tjeckien lever slutspelshoppet i allra högsta grad.
– Vi är glada över två poäng. Det var stort för oss. Det är en stor match imorgon, säger Filip Hronek.
Sverige riskerar missa trots seger
Sverige möter senare ikväll det ryska laget och behöver då en seger. Men även om man skulle vinna så kan resultatet i Slovakien-Tjeckien göra att Tre Kronor missar slutspel.
Om Tjeckien vinner efter förlängning så blir Sverige gruppfemma, det vill säga första lag att inte gå vidare.
Däremot kan en förlängningsseger räcka för Tre Kronor om Slovakien slår Tjeckien.
VM
Tjeckien
2 - 1
Danmark
Första perioden
- 03:410-1Nick. Jensen (M. Lauridsen/Olesen) PP1
Tredje perioden
- 1-1Kubalík (Chytil/Vrána)05:23
Straffläggning
- 2-1Chytil PS65:00