Joachim Low's men have progressed as winners of Group B and will be joined in the next stage of the competition be Portugal, who defeated the Netherlands 2-1 in the concurrent fixture in Kharkiv.
Lukas Podolski marked his 100th cap with the opener after 19 minutes, but Denmark hit back within monents, Michael Krohn-Dehli nodding home from close range to send the match into the break all square.
A lacklustre second-half saw neither side in any hurry to snatch the initiative, but Lars Bender settled matters with the winner in the 81st minute to send the Germans into the next round with victory in all three group games.
Both coaches were forced into one change to their starting lineups, with Bender replacing the suspended Jerome Boateng for Germany, while Dennis Rommedahl’s injury saw Jakob Poulsen begin for Denmark.
Joachim Low’s men raced out of the blocks, and saw two chances go begging early, both at the feet of Thomas Muller.
The Bayern Munich man’s indifferent form in front of goal continued, first firing over the bar from 15 yards out before somehow failing to put away Podolski’s cross from point blank range.
However, Muller would make his presence felt in other ways, as his low cutback was touched by Mario Gomez into the path of Podolski, who smashed home to give Germany the lead after 19 minutes.
But Denmark would respond within minutes. Lars Jacobsen’s deep corner was powered towards goal by Nicklas Bendtner, where Krohn-Dehli was waiting to head home the equaliser.
The match remained finely poised as the half wore on, though Germany’s greater enterprise in the attacking third meant that they always appeared the more likely to score again.
Podolski crashed a 20-yard free kick inches over the bar before Sami Khedira poked inches wide after attacking his own blocked shot.
Gomez’s poor control deep inside the area a minute before the interval spurned what should have been a clear cut opening, the ball instead smothered under the frame of Stephan Andersen.
Denmark had managed to escape the first half on terms, and then saw a fantastic opportunity to take the lead slip from their grasps five minutes after the restart.
Simon Poulsen’s pace on the left saw him slide towards Bendtner, who in turn teed up Jakob Poulsen in close, but the Midtjylland midfielder could only brush his shot off the outside of post.
However, the second half saw the match settle into lull, with both sides alternating spells of possession without really displaying a cutting edge.
Substitute Andre Schurrle attempted to break the monotony just past the hour mark after sneaking in on the left flank, but his poke at goal was parried comfortably by Andersen.
Manuel Neuer then caused a few German hearts to flutter with a fumbling piece of handling on a seemingly routine effort from distance by Niki Zimling.
But chances remained hard to come by, with Germany perhaps secure in the knowledge that a draw would take them through as group winners.
That permutation would be confirmed with nine minutes to go, as Bender was quickest to react to Mesut Ozil’s pass, to slot the Germans into the lead for good.
Bendtner sent a late header over the bar, but there was to be no recovery for Denmark whose exit from the tournament was confirmed with the news of Cristiano Ronaldo's late winner against Netherlands.