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 team mate Mark Webber.
The race, a chaotic epic packed with incident 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 team mate 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 pitlane -- 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 times world champion Michael Schumacher, a seven times 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 team mate 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 then 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 Grand Prix 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 in amazement 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.