McLaren's Jenson Button celebrated his 200th Formula One start by winning the Hungarian Grand Prix on Sunday after a thrilling race decided by tyre choices in the slippery, wet conditions.
Red Bull's Sebastian Vettel was second despite an error-strewn race to increase his championship lead over team mate Mark Webber to 85 points and move him closer to defending his title with eight races left after the mid-season break.
Ferrari's Fernando Alonso was third.
Briton Button sealed his second victory of the season after being wheel to wheel with Lewis Hamilton only for his team mate to drop back to fourth after a choosing the wrong tyres in the rain and then serving a drive through penalty following a spin.
"Guys, perfect going into the summer break. let's come back and win them all," Button, who took his first Grand Prix victory here in 2006 and also in the rain, told his team over the radio.
The Briton has now won 11 grands prix in a career that started with Williams in 2000.
"Congratulations to Jenson, he was pushing me hard the whole race and the better man won today," said Hamilton, who led before it all went wrong.
"Of course we would have loved a one-two, I feel like I let the team down a little bit but we'll bounce back at the next race," he added.
With cars sliding around as drizzle and tyre strategies came and went, the less than capacity crowd at the ageing Hungaroring were treated to a string of overtaking moves at a twisty circuit where passing had been difficult in the past.
Vettel made a good start from pole but Hamilton, winner of the previous race in Germany last Sunday, kept on the world champion's tail having been second on the grid.
The slippery track contributed to Vettel running wide early on and the Briton saw his chance to speed past before his afternoon went sour.
Button, third in qualifying and winner of the rain-hit Canadian GP, then also overtook the German in partially wet conditions as McLaren again showed their race superiority over the previously dominant Red Bull.
"I was struggling a bit on the first stint. It was quite tricky," said Vettel, who now has 234 points to Webber's 149, Hamilton's 146, Alonso's 145 and Button's 134.
Red Bull have 383 points to McLaren's 280 in the constructors' standings.
Drizzle had been in the air throughout Sunday and there was significant spray in some areas of the track early on.
Mercedes' Nico Rosberg cut past the two Ferraris of Felipe Massa and Fernando Alonso as well as Webber in the opening exchanges as drivers struggled to keep their cars from sliding.
Brazil's Massa, who suffered serious head injuries in an accident at the Hungaroring in 2009, then spun violently into the grass on lap eight and slipped down to ninth before fighting back up to sixth having started fourth on the grid.
Team mate Alonso soon got back past Rosberg, in his 100th F1 race, to move up into fourth but the Spaniard slipped back again when passed by Webber on lap 15 only for the Australian to end up fifth as the weather constantly changed.
Teams went with dry tyres at the first switch with the rain seeming to peter out but that did not stop the drama.
Nick Heidfeld's race ended in a blaze when his Renault caught fire shortly after leaving the pits and the German quickly parked up and jumped out as smoke billowed into the sky.
Seven-times world champion Michael Schumacher's miserable run continued when he had to retire his Mercedes before the halfway stage with a gearbox failure.
The rain returned two-thirds of the way through the race just as Hamilton opted to go back to intermediates having taken the lead from Button and then lost it again when hitting the kerb and spinning.
The tyre decision was an error with the heavens again open and he quickly came to the pits to change back before having to return for a drive through penalty having forced Force India's Paul di Resta off the track.
"I have to apologise to Paul...I didn't see him. so I had absolutely no clue," said Hamilton.A drive through penalty also hit Sauber's Sergio Perez after he overtook while yellow flags were being waved following Heidfeld's blaze and the Mexican ended up 15th.