Jenson Button celebrated his greatest victory on Sunday after overtaking Red Bull's Formula One World champion Sebastian Vettel on the last lap of a rain-delayed Canadian Grand Prix thriller.
Vettel, who skidded wide under relentless pressure just a few corners from the finish, recovered from his error to take second place ahead of Australian teammate Mark Webber.
The race, a chaotic epic packed with incidents that will be remembered as a highlight of any season, had earlier been halted for more than two hours as rain lashed the Circuit Gilles Villeneuve.
Button had to fight through from the back of the field to deny the runaway championship leader a sixth victory in seven races.
Along the way he squeezed McLaren teammate and fellow Briton Lewis Hamilton into the wall and out of the race and also collided with Ferrari's Fernando Alonso, ending the Spaniard's hopes when his car spun and was stuck on a kerb.
Despite his error, Vettel stretched his overall championship lead to 60 points with the 23-year-old German now on 161 to Button's 101.
“It's definitely my best race ... I'll remember this for a long time,” said Button, the 2009 World champion who had never before won in North America.
Button made six visits to the pit lane — five regular stops and one drive-through penalty — before storming back into contention as the track dried.
The race, punctuated by five safety car periods as well as the rain delay, finished more than four hours after it started.
“We did a lot of things to contribute to the show today but at the end of the day that was just fantastic,” said McLaren team principal Martin Whitmarsh.
“We knew we had to put pressure on Sebastian and he made a mistake. You can forgive him for that. He's driven so well this year but Jenson was just incredible. That's the stuff of champions, that's the stuff of dreams.
“He had the confidence, he went for it, he just attacked and attacked. What a fantastic result for him and the team.”
Seven-time World champion Michael Schumacher, a seven-time winner in Canada, narrowly missed out on the first podium of his comeback by bringing his Mercedes home in fourth place.
Russian Vitaly Petrov finished fifth for Renault while Brazilian Felipe Massa forced his way past Sauber's Kamui Kobayashi on the line in a virtual photo-finish.
Jaime Alguersuari was eighth for Toro Rosso, a big boost for the Spaniard whose teammate Sebastien Buemi was 10th, with Brazilian Rubens Barrichello scoring points for Williams for the second race running.
The stewards, one of them Brazil's former World champion Emerson Fittipaldi, had their hands full with a list of incidents under scrutiny but decided no further action was required and the results stood.
That allowed the 31-year-old Button to celebrate one of Formula One's greatest charges to secure his 10th career victory.
The race was one of two parts, first water-logged with drivers urging for it to be halted on safety grounds and the next exploding into action after the halt as the rain lifted and a dry line emerged.
Vettel, starting on pole for the sixth time this season and behind the safety car, was leading when the race was red-flagged and cars ordered to park on the starting grid after just 24 of the scheduled 70 laps had been completed.
After one of the longest delays in Formula One, he was back in front again but under pressure after Button made the right tyre call at the right time and began to take huge chunks of time out of the German's lead.
The race was the first run in wet weather this season, a new challenge for tyre supplier Pirelli, and the heavy spray and standing water made for a tough afternoon as cars skidded and spun out around the circuit. Hamilton's bid for a Canadian GP hat-trick, after winning on two of his previous three visits, ended after just eight laps when he tried to get past Button along the pit straight and they collided.
“What's he doing?” Button asked over the team radio while Hamilton parked his damaged car on the track, bringing out the safety car.
Hamilton, who was involved in two collisions in the previous race in Monaco, had also tangled earlier with Webber. “I think Lewis thought the chequered flag was in Turn Three,” joked the Australian.
HRT's best result
Hispania (HRT) chalked up its best result to date. Both drivers — Vitantonio Liuzzi, who finished 13th and Narain Karthikeyan 17th — overtook cars. Narain Karthikeyan lost positions after being unaware the team had switched him to dry tyres and slipping on the wet.
No points for Force India
Points eluded Force India as Paul di Resta ended 18th and Adrian Sutil failed to even finish the race. di Resta and Sutil raced hard but were unable to convert their effort into points finishes.
1. Jenson Button (McLaren) 2:04:39.537, 2. Sebastian Vettel (Red Bull) 2:04:42.246, 3. Mark Webber (Red Bull), 2:04:53.365, 4. Michael Schumacher (Mercedes) 2:04:53.756, 5. Vitaly Petrov (Renault) 2:04:59.932, 6. Felipe Massa (Ferrari) 2:05:12.762, 7. Kamui Kobayashi (Sauber) 2:05:12.807, 8. Jaime Alguersuari (Toro Rosso) 2:05:15.501, 9. Rubens Barrichello (Williams) 2:05:24.654, 10. Sebastien Buemi (Toro Rosso) 2:05:26.593, 11. Nico Rosberg (Mercedes) 2:05:29.991, 12. Pedro de la Rosa (Sauber) 2:05:43.144, 13. Vitantonio Liuzzi (HRT) +1 lap, 14. Jerome d'Ambrosio (Virgin), +1 lap, 15. Timo Glock (Virgin) +1 lap, 16. Jarno Trulli (Team Lotus) +1 lap, 17. Narain Karthikeyan (HRT) +1 lap, 18. Paul di Resta (Force India) +3 laps retired, 19. Pastor Maldonado (Williams) retired, 20. Nick Heidfeld (Renault) accident, 21. Adrian Sutil (Force India) retired, 22. Fernando Alonso (Ferrari) accident, 23. Heikki Kovalainen (Team Lotus) retired, 24. Lewis Hamilton (McLaren) accident.
World championship standings: Drivers: 1. Sebastian Vettel 161 pts., 2. Jenson Button 101, 3. Mark Webber 94, 4. Lewis Hamilton 85, 5. Fernando Alonso 69, 6. Felipe Massa 32, 7. Vitaly Petrov 31, 8. Nick Heidfeld 29, 9. Michael Schumacher 26, 10. Nico Rosberg 26, 11. Kamui Kobayashi 25, 12. Adrian Sutil 8, 13. Sebastien Buemi 8, 14. Jaime Alguersuari 4, 15. Rubens Barrichello 4, 16. Sergio Perez 2, 17. Paul di Resta 2.
Constructors: 1. Red Bull 255 pts., 2. McLaren 186, 3. Ferrari 101, 4. Lotus-Renault 60, 5. Mercedes GP 52, 6. Sauber 27, 7. Toro Rosso 12, 8. Force India 10, 9. Williams 4.