World champion Jenson Button calmly steered his way through the chaos of a wet Chinese Grand Prix for his second win of the season on Sunday, leading Lewis Hamilton to a McLaren one-two.
The 30-year-old Briton, who took the lead in the overall standings after celebrating his second win of the season and ninth of his career, yelled "We really earned that one!" on his team radio as he crossed the line.
"For me it's my best victory," said the grinning Button, who had started fifth on the grid.
"It was very tough conditions and the great thing is our pace was good. It wasn't just the luck of calling the weather."
Hamilton, who carved his way through the field from 12th on lap four to finish 1.530 seconds behind his compatriot in the first British one-two since 1999, may yet pay the penalty for his aggressive drive after a post-race probe into a pit lane clash with Red Bull's Sebastian Vettel.
"I had quite an eventful race," said Hamilton, the 2008 world champion, who embraced Button and shook his hand afterwards.
"I fought my way through and we both did a tremendous job and it's great for the team."
German Nico Rosberg got his second successive third place for Mercedes with Spain's Fernando Alonso, who earned a drive-through penalty for a jump start, finishing fourth for Ferrari.
Button now has 60 points overall, 10 clear of Rosberg with Hamilton and Alonso third and a point further back.
McLaren lead the constructor's standings with 109 points to Ferrari's 90.
Pole-sitter Vettel, who won the last race in Malaysia and here last year, could only manage sixth behind Robert Kubica's Renault, leaving the Shanghai race still without a repeat winner after seven years.
"Today was very chaotic and in the end to take sixth can be quite important," said Vettel. "Obviously, our main competitors finished ahead, so that's not nice. It was a very difficult race for us."
Renault's Vitaly Petrov passed both Michael Schumacher of Mercedes and the Red Bull of Mark Webber on the last few laps to take an impressive seventh place in the Russian's first completed Formula One race.
Alonso's premature start, a safety car for a three-car pile up on the first corner, heavy rain and another safety car later in the race contributed to an entertaining but chaotic race.
"I think we stopped five times to change the tyres," said twice world champion Alonso, who muscled his car past Brazilian team mate and previous championship leader Felipe Massa as both headed into the pits. "Hopefully, next race we have a normal weekend. We've had only one in Bahrain, and we won the race. So we need more normal weekends."
Rosberg emerged in the lead after the first few laps followed by Button and Kubica with the race favourite Red Bulls and Hamilton scrambling to change tyres to match the conditions.
Hamilton showed through his uncompromising clash with Vettel at both the entrance and exit to the pit lane that he was by no means cowed by criticism of his driving in Malaysia.
The Briton's drive included an audacious move to pass both Vettel and Adrian Sutil at one corner and a thrilling battle with seven-times world champion Schumacher.
1. McLaren 109
2. Ferrari 90
3. Red Bull 73
4. Mercedes 60
5. Renault 46
6. Force India 18
7. Williams 6
8. Toro Rosso 2
1. Jenson Button (Britain) McLaren 60 points
2. Nico Rosberg (Germany) Mercedes GP 50
3. Fernando Alonso (Spain) Ferrari 49
4. Lewis Hamilton (Britain) McLaren 49
5. Sebastian Vettel (Germany) Red Bull 45
6. Felipe Massa (Brazil) Ferrari 41
7. Robert Kubica (Poland) Renault 40
8. Mark Webber (Australia) Red Bull 28
9. Adrian Sutil (Germany) Force India 10
10. Michael Schumacher (Germany) Mercedes GP 10
11. Vitantonio Liuzzi (Italy) Force India 8
12. Vitaly Petrov (Russia) Renault 6
13. Rubens Barrichello (Brazil) Williams 5
14. Jaime Alguersuari (Spain) Toro Rosso 2
15. Nico Huelkenberg (Germany) Williams 1