Fernando Alonso led Felipe Massa in a Ferrari one-two at Hockenheim as the Italian team revitalised its season - but the win came amid controversy as Massa backed off to allow Alonso to pass him.
Poleman Sebastian Vettel was only third for Red Bull on home ground, ahead of the McLarens and Mark Webber. Massa had gained the lead at the first corner, after both Ferraris made better starts than Vettel. The German focused on squeezing Alonso towards the pit wall, allowing Massa to sweep around the outside of both, with Vettel pushed back to third.
The trio ran in close company at first, before the Ferraris started dropping Vettel following the pitstops. Alonso immediately seemed quicker on the harder tyres, closing right onto Massa's tail and drawing alongside on the backstraight. But then Massa lifted his pace and started pulling away, setting several new fastest laps and opening up a 3.4-second lead.
It did not last though, as Alonso responded with some fastest laps of his own, getting the gap back down to under a second. On lap 47, Massa's engineer Rob Smedley told his driver that "Fernando is faster than you" and asked him to confirm he 'understood'. Next time around, Massa lifted off after the hairpin and Alonso accelerated past on the straight to take the race lead, denying Massa victory on the first anniversary of the horrific Hungaroring crash that ended his 2009 season.
Vettel occasionally trimmed the Ferraris' advantage, and a late push got him onto Massa's tail, but he was unable to pass. The McLarens were never fast enough to fight for the podium and finished fourth and fifth, enough to keep them in the points lead. Lewis Hamilton managed to pass Webber on the first lap, with Button doing likewise by running through to lap 21 before his tyre stop. Webber then had to drop back from the McLarens to nurse his engine amid worryingly high oil consumption.
A lap down, Robert Kubica (Renault) beat the two Mercedes to seventh, with Nico Rosberg getting ahead of Michael Schumacher during the pit sequence after a good start from the elder German had earlier swapped their positions.
Renault got both cars in the points as Vitaly Petrov took 10th, while both Williams lost ground on the first lap and could not recover into the points, despite Nico Hulkenberg waiting until lap 34 before pitting.
Sauber's Pedro de la Rosa also tried a bold strategy, running the first 51 laps on one set of hard tyres before changing to softs, but his plan for a late charge was stymied when he hit Heikki Kovalainen's Lotus, breaking his front wing and taking the Finn out of the 'new teams' class' lead, as he had been just ahead of Timo Glock's Virgin up to then.
Other teams in trouble were Toro Rosso and Force India, who both saw both their cars damaged in first-lap incidents - in Toro Rosso's case after Jaime Alguersuari crashed into the back of Sebastien Buemi at the hairpin.