Dani Pedrosa claimed his first MotoGP victory of 2012, and his third straight at the Sachsenring, as a slow-burning German Grand Prix built to a dramatic conclusion.
Pedrosa's Honda team-mate Casey Stoner fell while trying to challenge Pedrosa on the final lap, handing Yamaha Jorge Lorenzo second, and with it the championship lead.
Andrea Dovizioso meanwhile captured his third podium for the Tech 3 squad, having withstood heavy pressure first from team-mate Cal Crutchlow and then from Yamaha factory rider Ben Spies.
From as early as the first lap there were signs no one else could match the factory Hondas, and so it proved as Stoner - having picked off Pedrosa though Turns 9/10 on the second lap - and the Spaniard edged away from the field.
Pedrosa at least kept it interesting at the front as the Hondas left the others trailing, refusing to allow Stoner to pull a gap of more than half a second at the front.
Eleven laps from the end Pedrosa picked off Stoner at Turn 1, but the Australian took up the chase and was on Pedrosa's tail on the final lap when he lost the front of his bike and dropped it into the gravel at Turn 12.
Lorenzo was therefore gifted second, and with it a 20-point lead in the championship. He was looking at a four-point deficit just two corners from the finish.
His lonely ride was in stark contrast to the battle happening behind him. Spies initially held fourth, but on lap eight was picked off by Dovizioso at Turn 1 and then Crutchlow at Turn 12.
There was nothing to choose between the Tech 3 men for almost the entire race, while Spies was able to rejoin on the back and make it a three-way fight, the trio rarely separated by less than two tenths of a second.
The scrap came to a premature conclusion however when Crutchlow ran deep and into the gravel at Turn 1 five laps from the end, dropping to 11th. Without his pressure Dovizioso was able to resist Spies, claim third and move ahead of Crutchlow in the championship.
Not to be deprived of action, Crutchlow then rejoined in the midst of what was already a five-way scrap for fifth.
LCR Honda's Stefan Bradl had already been locked in a battle with the two works Ducati's and the satellite Pramac of Hector Barbera, with the latter trio swapping positions in the early stages.
Gresini Honda's Alvaro Bautista, who had scythed through the field after his Dutch TT penalty forced him to start from the back of the grid, and then Crutchlow also got involved in the final two laps.
As the fight raged behind him Bradl managed to hang on to fifth, although it was a photo finish as he, Rossi, Bautista and Crutchlow fanned out across the line. Barbera and Hayden also finished in close attention, the six riders separated by just 1.4s at the flag.
Results - 30 laps:
Pos Rider Team/Bike Time/Gap
1. Dani Pedrosa Honda 1m39.667s
2. Jorge Lorenzo Yamaha + 14.996s
3. Andrea Dovizioso Tech 3 Yamaha + 20.669s
4. Ben Spies Yamaha + 20.740s
5. Stefan Bradl LCR Honda + 27.893s
6. Valentino Rossi Ducati + 28.050s
7. Alvaro Bautista Gresini Honda + 28.246s
8. Cal Crutchlow Tech 3 Yamaha + 28.447s
9. Hector Barbera Pramac Ducati + 29.053s
10. Nicky Hayden Ducati + 29.226s
11. Randy de Puniet Aspar Aprilia + 53.176s
12. Colin Edwards Forward Suter-BMW + 58.204s
13. Aleix Espargaro Aspar Aprilia + 1m04.654s
14. Yonny Hernandez Avintia FTR-Kawasaki + 1m13.543s
15. James Ellison Paul Bird Aprilia + 1m30.318s
16. Franco Battaini Cardion Ducati + 1 lap
17. Danilo Petrucci Ioda-Aprilia + 1 lap
18. Ivan Silva Avintia Inmotec-Kawasaki + 1 lap
Casey Stoner Honda 29 laps
Mattia Pasini Speed Master Aprilia 4 laps
Michele Pirro Gresini FTR-Honda 3 laps