Britain's Jenson Button mastered the tricky conditions to clinch his first Formula One victory in his 113th race at the Hungarian Grand Prix on Sunday.
HUNGARIAN GRAND PRIX RESULT
1 J Button (Honda)
2 P de la Rosa (McLaren)
3 N Heidfeld (BMW Sauber)
4 R Barrichello (Honda)
5 D Coulthard (Red Bull)
6 R Schumacher (Toyota)
7 F Massa (Ferrari)*
8 M Schumacher (Ferrari)
* R Kubica (BMW Sauber) disqualified from 7th place
Button drove superbly to slash Fernando Alonso's lead, and took control when the Spaniard retired on lap 52 of 70.
Michael Schumacher was classified ninth but was elevated to eighth when Robert Kubica was disqualified, handing him a vital point in the title race.
McLaren's Pedro de la Rosa finished in second, with Heidfield in third place.
A delighted Button jumped out of the car to hug the rest of the Honda crew before climbing onto the podium as he became the first British winner of a Grand Prix since David Coulthard three years ago.
"What a day - it's been amazing," said the 26-year-old.
"Coming through from 14th to win the race was brilliant. I couldn't have done it a better way.
"But I have to thank everyone in the team - the strategy was spot on."
The victory was also Honda's first win as a constructor since 1967.
We have won the race not just through speed but through strategy
The drivers had to contend with tricky weather conditions at the Hungaroring, with heavy rain followed by bright sunshine and a drying track, making the timing and selection of tyre changes crucial.
Honda got their changes right, as Button beat De la Rosa to the chequered flag by 30.8 seconds.
"We have thought hard and we have won the race not just through speed but through strategy," added Button.
Button gradually made his way through the pack with some intelligent overtaking decisions, keeping himself out of trouble in the wet weather.
Alonso looked to have the race in his control, but Kimi Raikkonen - who started on pole - crashed out with a spectacular shunt into the back of Vitantonio Liuzzi, and brought the safety car onto the track.
That allowed the chasing pack to close in, with Button in second ahead of De la Rosa.
When the racing resumed, Alonso had three backmarkers separating him from Button allowing him to pull clear again.
But with the track drying, Button began to cut into Alonso's advantage and the Englishman took the lead when the Renault came in to change to dry tyres.
With Button still needing to make a final stop to do the same, a tense finish looked in prospect, but Alonso was forced into retirement immediately after rejoining the track when his right rear wheel nut came loose.
Alonso's retirement set the stage for Schumacher to cut the 11-point gap at the top of the drivers' standings, but his heavily worn tyres saw him lose second and then third places before he too stopped with a broken track rod.
Britain's Coulthard finished in fifth place, while BMW Sauber's Robert Kubica finished in seventh place on his F1 debut only to be disqualified because his car ran 2kg too light.
Results from Hungarian Grand Prix on Sunday:
1. Jenson Button (GB) Honda one hour 52 minutes 20.941 seconds
2. Pedro de la Rosa (Spa) McLaren-Mercedes 30.837
3. Nick Heidfeld (Ger) BMW Sauber 43.822
4. Rubens Barrichello (Brz) Honda 45.205
5. David Coulthard (GB) Red Bull-Ferrari 1 lap
6. Ralf Schumacher (Ger) Toyota 1 lap
7. Felipe Massa (Brz) Ferrari 1 lap
DQ Robert Kubica (Pol) BMW Sauber 1 lap
R 8 Michael Schumacher (Ger) Ferrari 3 laps
9. Tiago Monteiro (Por) Midland 3 laps
10. Christijan Albers (Ned) Midland 3 laps
11. Scott Speed (USA) Toro Rosso-Cosworth 4 laps
12. Jarno Trulli (Ita) Toyota 5 laps
13. Takuma Sato (Jpn) Super Aguri-Honda 5 laps
R Fernando Alonso (Spa) Renault 19 laps 51 laps completed
R Vitantonio Liuzzi (Ita) Toro Rosso-Cosworth 25 laps
R Kimi Raikkonen (Fin) McLaren-Mercedes 25 laps
R Nico Rosberg (Ger) Williams-Cosworth 19 laps
R Giancarlo Fisichella (Ita) Renault 18 laps
R Christian Klien (Aut) RedBull-Ferrari 6 laps
R Mark Webber (Aus) Williams-Cosworth 1 lap
R Sakon Yamamoto (Jpn) Super Aguri-Honda 0 laps
Key: R = retired