Germany 1-2 Denmark
(Kerschowski 3' - Nadim 49', Nielsen 83')
Denmark completed a shock second-half comeback in a rescheduled quarterfinal to eliminate holders Germany from the Women's European Championship.
Germany, who are ranked second in the world, could not build on the early lead given to them by Isabel Kerschowski's thunderous shot in Rotterdam. Nadia Nadim then headed the equalizer for Denmark before Anja Mittag missed a great chance to restore Germany's advantage. Her header from the six-yard box sailed over the bar.
Theresa Nielsen scored the winner for Denmark seven minutes from time, burying a cross from substitute Frederikke Thorgersen into the bottom left corner.
Germany have dominated the European game over the years, winning eight titles in all. But they were lackluster in the group stage this time around and have paid the price in the first knockout round.
They had won the last six Women's Euros and had never previously missed out on a semifinal. The side came into this year's tournament as Olympic gold medalists after winning the women's tournament at the 2016 Summer Games in Rio.
Sunday's loss will put a lot of pressure on coach Steffi Jones, who took over from the all-conquering Silvia Neid following the Rio triumph.
"The disappointment is very big," said Jones, who amassed 111 caps for Germany as a player from 1993 to 2007. "You ask yourself what went wrong and what we didn't understand after the group games."
The quarterfinal in Rotterdam had been rescheduled to midday local time on Sunday after heavy rain on Saturday made the surface unplayable.
Denmark, who have reached their sixth semifinal at the Women's Euros, now await either Austria or Spain, who were to play their quarterfinal on Sunday.
"I'm so happy that we beat Germany. It's amazing," matchwinner Nielsen said. "Everybody dreams about scoring, but doing it is another thing. Why not today? It's a good day."
Hosts the Netherlands beat Sweden 2-0 on Saturday while France meet England later in the final last-eight clash. The semifinals take place on Thursday.
Check out the liveblog from the game below