Favoriterna före turneringen - som senast knockades ur denna tävling 1993 - hade lett till att Isabel Kerschowski sköt tidigt.
Men Nadia Nadim nickade Danmark nivå efter halvtid och Theresa Nielsen sena huvudet avslutade comeback.
Det är bara Tysklands tredje förlust i tävlingens 26-åriga historia.
De olympiska mästarna - rankade som tvåa i världen - skapade många chanser, men de öppnades också ofta på baksidan av en dansk sida, som efter en nervös start blev allt farligare.
Öppnaren kom artighet av en målvakt fel, som Stina Lykke Petersen missbedömde Kerschowskis våldsamma skott från kanten av området och kunde bara parera tyskens skott in i nätet.
Efter pausen tvekade Tyskland när de trodde att de hade medgett en free-kick endast för domaren att spela en fördel som Danmark tog, med Portland Thorns framåt Nadim hoppa bra på långt inlägget för att nicka i equalizern.
Massor av öppningar för båda sidor följde som spelet blev sträckt med utsikten till extra tid hotande.
Ett annat högerkors fann Nielsen omärkt i Tysklands straffområde på 83 minuter och hon begav sig in för att starta vilda danska fester.
Resultatet garanterade att turneringen kommer att ha en annan vinnare för första gången sedan Norges triumf 1993, med Tyskland har vunnit följande sex EM.
Mediauppspelning stöds inte på den här enheten
Matchen måste omplaneras till 11:00 BST på söndagen efter skyfall föll på lördag kväll i Rotterdam.
Det innebar att kvartsfinalen var en av tre som skulle äga rum på söndag.
Österrike slog Spanien i en shootout efter sidorna drog 0-0, vilket innebär att de kommer att möta danskarna i semina.
Och England slog Frankrike 1-0 för att säkra ett möte med värdar Nederländerna, som bokade sin plats under de senaste fyra på lördagen med en seger över Sverige.
Matchen slutar, Tyskland 1, Danmark Kvinnor 2.
Andra halvlek, Tyskland 1, Danmark Kvinnor 2.
Försök missade. Isabel Kerschowski (Tyskland) höger fotade skott utanför lådan är för hög.
Hörnet, Tyskland. Förföljd av Theresa Nielsen.
Offside, Danmarks kvinnor. Pernille Harder försöker en genom boll, men Nadia Nadim fångas offside.
Försening över. De är redo att fortsätta.
Substitution, Tyskland. Lena Petermann ersätter Linda Dallmann.
Försening i match Theresa Nielsen (Danmark Kvinnor) på grund av en skada.
Försöket räddades. Anja Mittag (Tyskland) vänster fotade skott från utsidan boxen sparas i mitten av målet. Assisterad av Anna Blässe.
Försök blockerat. Lena Goeßling (Tyskland) vänster fotade skott utanför lådan är blockerad.
Försök blockerat. Linda Dallmann (Tyskland) vänster fotade skott utanför lådan är blockerad. Hjälpt av Lina Magull.
Försök missade. Nadia Nadim (Danmark Kvinnor) höger fotade skott från vänster sida av lådan är nära, men missar till höger. Hjälpt av Katrine Veje.
Mål!  Tyskland 1, Danmark Kvinnor 2. Theresa Nielsen (Danmark Women) huvud från mitten av lådan till övre vänstra hörnet. Hjälpt av Frederikke Thøgersen med ett kors.
Foul av Dzsenifer Marozsán (Tyskland).
Nadia Nadim (Danmark Kvinnor) vinner en frispark i defensiva halvan.
Hörnet, Tyskland. Förföljd av Sanne Troelsgaard.
Försök blockerat. Lina Magull (Tyskland) höger fotade skott utanför lådan är blockerad. Hjälpt av Isabel Kerschowski.
Försening över. De är redo att fortsätta.
Försening i matchen Nadia Nadim (Danmark Kvinnor) på grund av en skada.
Försök missade. Anja Mittag (Tyskland) header från mitten av lådan är bara lite för hög. Hjälpt av Sara Däbritz med ett kors.
Försök missade. Anja Mittag (Tyskland) höger fotade skott utanför lådan missar till höger. Hjälpt av Lina Magull.
Försök blockerat. Sara Däbritz (Tyskland) vänster fotade skott utanför lådan är blockerad.
Substitution, Danmark Kvinnor. Cecilie Sandvej ersätter Line Røddik Hansen.
Mandy Islacker (Tyskland) vinner en frispark i den defensiva halvan.
Foul by Line Røddik Hansen (Danmarks kvinnor).
Substitution, Danmark Kvinnor. Frederikke Thøgersen ersätter Maja Kildemoes.
Offside, Tyskland. Isabel Kerschowski försöker en genom boll, men Mandy Islacker fångas offside.
Försök blockerat. Lina Magull (Tyskland) höger fotade skott utanför lådan är blockerad. Hjälpt av Linda Dallmann.
Offside, Danmarks kvinnor. Line Jensen försöker en genom boll, men Pernille Harder fångas offside.
Substitution, Tyskland. Mandy Islacker ersätter Kristin Demann.
Hörnet, Tyskland. Sammankallad av Stina Lykke Petersen.
Försöket räddades. Linda Dallmann (Tyskland) höger fotade skott från mitten av lådan sparas i nedre vänstra hörnet. Hjälpt av Kristin Demann.
Försök missade. Pernille Harder (Danmark Women) vänster fotade skott från vänster sida av lådan missar till höger. Hjälpt av Line Jensen.
Försök blockerat. Nadia Nadim (Danmark Kvinnor) vänster fotade skott från utsidan lådan är blockerad. Hjälpt av Simone Sørensen.
Foul av Babett Peter (Tyskland).
Nadia Nadim (Danmark Kvinnor) vinner en frispark på högerkanten.
Almuth Schult (Tyskland) vinner en frispark i den defensiva halvan.
Foul av Pernille Harder (Danmarks kvinnor).
Katrine Veje (Danmark Kvinnor) träffar baren med en vänster fotad skott från mycket nära håll. Hjälpt av Nadia Nadim med ett kors.
Hörnet, Tyskland. Sammankallad av Stina Lykke Petersen.
Tysklands bud på en sjunde på varandra följande EM-titel är över efter att Danmark slagits tillbaka för att vinna en underhållande Euro 2017 kvartsfinal.