Fernando Alonso extended his Formula 1 world championship lead by fending off Sebastian Vettel and a resurgent Jenson Button to win the German Grand Prix at Hockenheim.
Alonso never had a huge lead in his Ferrari, but did enough to keep the chasing Red Bull and McLaren at bay. In the end he was helped by Vettel and Button battling to the finish, their dice finally settled by a penultimate-lap pass from the Red Bull.
The result stretched Alonso's championship cushion to 34 points, as Silverstone winner Mark Webber finished a muted eighth.
In a similar scenario to the previous race in Britain, Alonso spent the grand prix under increasing pressure. The Ferrari established a slight cushion over Vettel's Red Bull in the opening stint on soft tyres, then came under greater threat once they changed to medium Pirellis at the first pitstops.
By that time Button was also in the fight. The Briton overtook Michael Schumacher and Nico Hulkenberg early on, then closed in on the top two, gaining some ground when his team-mate Lewis Hamilton - who had been delayed with an early puncture - unlapped himself from Vettel.
Stopping a lap earlier than the champion at the final tyre changes then allowed Button to sweep into second place. He resisted Vettel's attempted retaliation at the hairpin, and then set off after Alonso.
But in the closing laps it was Button who was under pressure as Vettel attacked. The Red Bull went down the outside into the hairpin with a lap to go and used the run-off area on the exit to complete a pass then did not impress Button, although the Briton still claimed his first podium since April's Chinese GP. The stewards are investigating the move.
Kimi Raikkonen took an ultimately lonely fourth for Lotus, as the Saubers showed great race pace and tyre life - Kamui Kobayashi and Sergio Perez coming through to fifth and sixth from their midfield grid slots.
Perez held on amid late pressure from Schumacher's Mercedes, which was running a three-stop strategy and charging back on fresh soft tyres.
Webber never featured near the front and took eighth, just ahead of Hulkenberg. The Force India driver drifted down the order as the race progressed, with his team-mate Paul di Resta ending up behind Nico Rosberg's Mercedes in 11th. Rosberg also pitted three times and managed to make up ground well after his practice and qualifying dramas.
Hamilton was one of several drivers delayed in first-lap incidents in which either contact or debris caused damage. The McLaren eventually retired, while fellow early pit visitors Felipe Massa, Bruno Senna and Romain Grosjean kept racing and got back to 12th, 17th and 18th respectively. Also in trouble was Senna's Williams team-mate Pastor Maldonado, who appeared to be suffering high tyre wear as he slumped to 15th.
PROVISIONAL RACE RESULTS
The German Grand Prix
67 laps; 306.458km;
Pos Driver Team Time
1. Alonso Ferrari 1h31:05.862
2. Vettel Red Bull-Renault + 3.732
3. Button McLaren-Mercedes + 6.949
4. Raikkonen Lotus-Renault + 16.409
5. Kobayashi Sauber-Ferrari + 21.925
6. Perez Sauber-Ferrari + 27.896
7. Schumacher Mercedes + 28.960
8. Webber Red Bull-Renault + 46.900
9. Hulkenberg Force India-Mercedes + 48.100
10. Rosberg Mercedes + 48.800
11. Di Resta Force India-Mercedes + 59.200
12. Ricciardo Toro Rosso-Ferrari + 1:11.400
13. Massa Ferrari + 1:16.800
14. Vergne Toro Rosso-Ferrari + 1:16.900
15. Maldonado Williams-Renault + 1 lap
16. Petrov Caterham-Renault + 1 lap
17. Senna Williams-Renault + 1 lap
18. Grosjean Lotus-Renault + 1 lap
19. Kovalainen Caterham-Renault + 2 laps
20. Pic Marussia-Cosworth + 2 laps
21. De la Rosa HRT-Cosworth + 3 laps
22. Glock Marussia-Cosworth + 3 laps
23. Karthikeyan HRT-Cosworth + 3 laps
Fastest lap: Schumacher, 1:18.275
Driver Team On lap
Hamilton McLaren-Mercedes 58
World Championship standings, round 10:
1. Alonso 154 1. Red Bull-Renault 238
2. Webber 120 2. Ferrari 177
3. Vettel 118 3. McLaren-Mercedes 157
4. Raikkonen 95 4. Lotus-Renault 156
5. Hamilton 92 5. Mercedes 105
6. Rosberg 76 6. Sauber-Ferrari 78
7. Button 65 7. Williams-Renault 47
8. Grosjean 61 8. Force India-Mercedes 46
9. Perez 47 9. Toro Rosso-Ferrari 6
10. Kobayashi 31
11. Maldonado 29
12. Schumacher 29
13. Di Resta 27
14. Massa 23
15. Hulkenberg 19
16. Senna 18
17. Vergne 4
18. Ricciardo 2