Red Bull's Mark Webber denied Lewis Hamilton victory in front of his home crowd but the Briton's second place finish at Silverstone saw him extend his overall lead in the drivers' championship.
Hamilton is 12 points clear of holder Jenson Button who battled from 14th place on the grid to finish fourth behind Mercedes GP's Nico Rosberg.
Sebastian Vettel's hopes of winning back-to-back races at Silverstone were almost over after the opening corner as he finished a disappointing seventh.
After starting in pole, the Red Bull driver was beaten off the line by team-mate Webber and picked up a puncture during the first-corner melee before briefing leaving the track and dropping to the back of the field. The German pitted at the end of the opening lap.
Vettel's woes left McLaren's Hamilton in second place, the Briton up from fourth on the grid, while Ferrari's Fernando Alonso dropped from third to fifth off the start.
Hamilton's team-mate Button, who called his car "undriveable" after a poor qualifying on Saturday, moved up to eighth place from 14th on the grid by lap three.
Webber had pulled 2.4 seconds clear of Hamilton by lap eight as Renault's Robert Kubica moved up to third place.
Kubica's pace was no match for the front two, however, and by lap 12 of 52 he was 15.2 seconds behind Hamilton, with a gaggle of cars trailing in his wake.
A rash of pit stops played into the hands of Button who rose to fourth by lap 15.
With Webber and Hamilton changing to harder tyres after their first stops, the advantage clearly lay with the Red Bull as Webber took his lead out to 5.9 seconds by lap 26.
The deployment of the safety car on lap 29 in response to the debris on the circuit following Sauber's Pedro de la Rosa and Force India's Adrian Sutil come together saw the pack close.
The safety car pulled in two laps later but Webber was not put off his stride and maintained his advantage over Hamilton.
The safety car period played into the hands of Vettel, who passed Felipe Massa for 12th on lap 33 before overhauling the Toro Rosso of Jaime Alguersuari, the Renault of Vitaly Petrov and Hulkenberg to move into the points.
Webber's control of the race was starkly underlined on lap 37, the Australian posting a lap almost a second faster than Hamilton to take his lead back out to 4.9 seconds and he kept his composure to register his third win of the season.
The win takes the Australian onto 128 points, seven ahead of Vettel.
F1 championship standings
Drivers
1. Lewis Hamilton (GBR) 145.0pts, 2. Jenson Button (GBR) 133.0, 3. Mark Webber (AUS) 128.0, 4. Sebastian Vettel (GER) 121.0, 5. Fernando Alonso (ESP) 98.0, 6. Nico Rosberg (GER) 90.0, 7. Robert Kubica (POL) 83.0, 8. Felipe Massa (BRA) 67.0, 9. Michael Schumacher (GER) 36.0, 10. Adrian Sutil (GER) 35.0, 11. Rubens Barrichello (BRA) 29.0, 12. Kamui Kobayashi (JPN) 15.0, 13. Vitantonio Liuzzi (ITA) 12.0, 14. Sebastien Buemi (SWI) 7.0, 15. Vitaly Petrov (RUS) 6.0, 16. Jaime Alguersuari (ESP) 3.0, 17. Nico H|lkenberg (GER) 2.0
Constructors
1. McLaren 278.0pts, 2. Red Bull 249.0, 3. Ferrari 165.0, 4. Mercedes GP 126.0, 5. Renault 89.0, 6. Force India 47.0, 7. Williams F1 31.0, 8. Sauber 15.0, 9. Toro Rosso 10.0
Source: Telegraph