Mario Gomez gave the Netherlands a lesson in finishing as Germany left their bitter rivals on the brink of an early exit from Euro 2012.
The Bayern Munich striker turned sharply and slotted home Bastian Schweinsteiger's pass before lashing in a brilliant second from the right.
Robin van Persie, who had wasted a golden chance to put the Dutch ahead, gave them hope with a fine strike.
But Germany held on to all but cement their place in the quarter-finals.
While the Germans just need a point from their last game to reach the last eight, the Dutch face an uphill task.
They must beat Portugal on Sunday, hope Germany beat Denmark, and ensure they finish with a better goal difference than Portugal and the Danes.
"The Germans had possession and quality and looked justifiable second favourites for the tournament, although when Van Persie scored there was a spring in the Dutch step.
"But it was a step too far for them. The Germans are reknowned for getting the job done. Defensively in the two games the Dutch haven't been good enough."
Meanwhile, coach Bert van Marwijk must somehow rouse his players after a devastating defeat by their fiercest foes. The long-standing enmity between the teams has produced era-defining clashes at the 1974 World Cup, the 1988 European Championship and the 1990 World Cup.
The Dutch, who wasted 28 shots at goal in
losing their opening game 1-0 to Denmark,
made the brighter start when a long ball from Mark van Bommel caught the German defence napping.
Van Persie, as guilty as anyone of profligacy against the Danes, had time to take a touch, but instead chose a first-time volley, which was easily saved by Manuel Neuer.
Germany hit back with a volleyed effort of their own as Mesut Ozil's strike from the edge of the area cannoned off the near post and into the arms of the grateful Maarten Stekelenburg.
Most of the Netherlands' attacking play was channelled through Arjen Robben on the right and the Bayern Munich winger was the provider for Van Persie's next chance, slotting a pass through to the Arsenal striker, who dragged his right-footed effort wide.
Ibrahim Affelay's delivery was less reliable and, after breaking clear down the left, his low cross failed to pick out Van Persie in space in the middle.
Once again, the Dutch were made to pay for their inaccuracy, falling behind midway through the half to a moment of German precision.
Thomas Mueller cut in from the right and fed Schweinsteiger, whose inch-perfect through-ball was brilliantly controlled on the spin by Gomez, who then wrong-footed the goalkeeper with his finish.
The goal seemed to devastate the Dutch - their early confidence on the ball deserting them, their body language that of a defeated team.
Germany should have doubled their lead when an inexplicably unmarked Holger Badstuber headed an Ozil free-kick straight at Stekelenburg from four yards.
But any disappointment was short-lived as Schweinsteiger again fed Gomez, who lashed a delicious shot across the goalkeeper and inches inside the far post.
Van Marwijk made an attacking double-substitution at half-time, sending on Klaas-Jan Huntelaar and Rafael van der Vaart. But the withdrawal of captain Van Bommel left a giant hole in front of the Dutch back four, allowing centre-back Mats Hummels to stroll through and almost put the game beyond doubt.
Euro 2012: Mario Gomez gives Germany the lead
Van Persie gave the Dutch hope when he forced Neuer into a smart one-handed save with a half-volley from the edge of the area, and Wesley Sneijder's goal-bound shot was superbly blocked by Jerome Boateng.
Their reward for a period of concerted pressure arrived when Van Persie finally found his range in style, darting in from the left flank and arrowing a low shot past Neuer with his weaker right foot from 25 yards.
Roared on by a sea of orange in the stands, the Dutch pressed hard for an equaliser, with Van Persie's claims for a penalty after going down under a challenge from Hummels waved away by the referee.
But their efforts thereafter too often fizzled out the edge of the area, their growing frustration and disjointedness encapsulated in the sight of the substituted Robben vaulting the advertising hoardings on the far side of the pitch rather than running across to be replaced by Dirk Kuyt.
Indeed, it was Germany who came closest to a late goal when Stekelenburg allowed a backpass to run across his body, recovering just in time to prevent substitute Miroslav Klose from scoring the simplest of goals.
- 01 Stekelenburg
- 02 Van Der Wiel
- 03 Heitinga
- 04 Mathijsen
- 15 Willems Booked
- 06 Van Bommel (Van der Vaart - 46' )
- 08 De Jong Booked
- 10 Sneijder
- 11 Robben (Kuyt - 83' )
- 16 Van Persie
- 20 Afellay (Huntelaar - 46' )
- 12 Vorm
- 22 Krul
- 05 Bouma
- 13 Vlaar
- 21 Boulahrouz
- 14 Schaars
- 17 Strootman
- 23 Van der Vaart
- 07 Kuyt
- 09 Huntelaar
- 18 De Jong
- 19 Narsingh
- 01 Neuer
- 05 Hummels
- 14 Badstuber
- 16 Lahm
- 20 Boateng Booked
- 06 Khedira
- 07 Schweinsteiger
- 08 Ozil (Kroos - 81' )
- 13 Mueller (Bender - 90' )
- 10 Podolski
- 23 Gomez (Klose - 72' )
- 12 Wiese
- 22 Zieler
- 03 Schmelzer
- 04 Howedes
- 17 Mertesacker
- 02 Gundogan
- 09 Schurrle
- 15 Bender
- 18 Kroos
- 19 Gotze
- 21 Reus
- 11 Klose