Germany secured a familiar World Cup semi-final berth with a minimum of fuss as French hopes of avenging past injustices shrivelled and died in the Maracana.
This is the fourth World Cup in a row that Germany have reached the last four of the tournament, and France had little answer to Mats Hummels' 12th-minute header.
Germany always looked comfortable with the slender lead and it was Joachim Low's side who came closest to scoring again before settling for a 1-0 result.
This was a blow to French pride, the country remembering with bitterness semi-final defeats by Germany in 1982 - the infamous Harald Schumacher challenge on Patrick Battiston - and 1986.
For some reason, Didier Deschamps' side seemed strangely subdued in the manner of their defeat. Even towards the final whistle there seemed little urgency.
This was far from the classic that had been hoped for - indeed it was one of the more turgid affairs of this consistently excellent tournament.
The team selections saw a trio of Arsenal players dropped to the bench: Per Mertesacker for Germany, who had been struggling with an illness, and Olivier Giroud and Laurent Koscielny for France.
The significant move for Germany was captain Philipp Lahm returning to left-back rather than midfield, and it looked as though Low had his selection right with Mamadou Sakho, the Liverpool defender whose return from injury accounted for Koscielny missing out, looking hesitant.
Sakho gifted possession to Thomas Muller early on, with his cross causing chaos in the French defence before it was cleared.
But France began to make things uncomfortable for the German defence too, especially the darting runs of Mathieu Valbuena. It was he who found Karim Benzema unmarked with plenty of time and space, but he sidefooted wide when he should have scored.
Germany intensified the pain of the miss in the 12th minute when Kroos' free-kick was met by Hummels, outjumping Raphael Varane and steering a header over Hugo Lloris.
Mesut Ozil, the one Arsenal player who did start, produced a brilliant volleyed cross to Miroslav Klose, who went sprawling in the box. TV replays show Mathieu Debuchy did have hold of Klose's shirt but an over-dramatic fall by the striker did not impress Argentinian referee Nestor Pitana.
Germany failed to build on their lead however and it was France who finished the half on the up.
Manuel Neuer produced an outstanding diving one-handed save from Valbuena, with Benzema unable to put home the rebound from close range as Hummels was in the way.
Real Madrid striker Benzema was denied again after cutting inside but shooting straight at Neuer.
Germany appeared content to play on the break and contain a more adventurous-looking France, a risky approach but it almost paid off when Kroos and Ozil combined but the Arsenal man's return ball was just cut out, then Kroos shot badly wide from 25 yards after more neat approach play.
But much of Germany's midfield play was untidy, and following one such episode Debuchy's cross was met by Varane with a decent header but Neuer held it comfortably enough.
Deschamps' answer was to send on Loic Remy for Yohan Cabaye, a striker for a midfielder, but it was Germany who started to look more dangerous.
Muller skimmed a shot just past the post, Andre Schurrle came off the bench to send a low drive straight at Lloris, then Ozil and Muller combined before France smuggled the ball away.
A glimpse of goal for Benzema was shut down by Sami Khedira, then Blaise Matuidi had an attempt from a narrow angle easily punched clear by Neuer.
A quick break by Germany ended in a couple of terrible misses. Ozil put one on a plate for Muller but he completely missed his kick before Schurrle shot weakly straight at Lloris.
The last throw of the dice was for Deschamps to throw on Giroud for Valbuena - a strange choice given that the diminutive Marseille midfielder nicknamed 'petit velo' had been France's player of the tournament.
Schurrle had another good opportunity blocked before Benzema's last-minute strike was turned away one-handed by the unflappable Neuer.