England fick en käftsmäll i den första halvleken.
De höll nollan i nästan 500 minuter i mästerskapet innan dansken Mikkel Damsgaard spräckte den. Han tog hand om en frispark strax utanför straffområdet och bjöd på en drömträff som blev otagbar för Jordan Pickford. Danmark i förarsäte, England i chock.
Sex minuter senare tog de vitklädda revansch. Bukayo Saka spelade in bollen i straffområdet och Raheem Sterling var framme och störde mittbacken Simon Kjaer som olyckligt glidtacklade in bollen i eget mål.
Engelsk sluforcering i slutet
Sex minuter in i den andra halvleken passades Kasper Dolberg fram till ett bra avslutsläge. 23-åringen lade bollen tillrätta och avlossade ett tungt skott lågt i Pickfords högra hörn, men läget blåstes sedan av för offside.
I den 55:e minuten testades i stället Schmeichel. Harry Maguire visade fin spänst och kom upp högt på en frispark när han tryckte till bollen med pannan och tvingade den danska målvakten att sträcka ut rejält.
En engelsk slutforcering i den andra halvleken räckte inte till något mål och matchen gick till förlängning.
Straff avgjorde
Den engelska pressen fortsatte i förlängningen och i den 94:e minuten bröt sig Harry Kane loss till ett vasst avslut. Men den storspelande Schmeichel stod återigen för en briljant insats och fick en hand på bollen.
Danmark var illa ute under de efterföljande minuterna och i i den 102:a minuten var mardrömmen framme.
Sterling revs ner i straffområdet och Kane klev fram för att göra jobbet från elva meter. Tottenham-stjärnans straff var tam och Schmeichel räddade – men anfallaren kunde sedan skjuta in sin egen retur. Det blev också det avgörande målet.
England hade inför matchen vunnit 18 av sina 20 senaste hemmamatcher. Den enda förlusten under den sviten kom mot Danmark den 14 oktober i fjol – och då stod Christian Eriksen för matchens enda mål. Den här gången klarade de däremot inte av att vinna.
Senast England spelade en final var i VM 1966. De ställs nu mot Italien final. Matchen spelas den 11 juli.