Jenson Button took a stunning victory in a dramatic, rain-affected Canadian Grand Prix by passing Sebastian Vettel on the last lap of an absorbing race.

Vettel's Red Bull ran wide under pressure to gift the win to Button, who recovered after a collision with McLaren team-mate Lewis Hamilton.

Red Bull's Mark Webber was third to deprive Mercedes driver Michael Schumacher of a podium place.

Vettel now leads the championship by 60 points from Button.

An incident-packed race saw the safety car used five times and included a two-hour stoppage for heavy rain. Button himself made five pit stops on his way to victory as well as an enforced visit to the pits for a drive-through penalty for speeding under the safety car.

Button described the win as possibly the best of his career.

"I really don't know what to say, it's been a very emotional race," he said. "The incident with Lewis - I couldn't see anything and I've apologised to him.

"It was really a fight from then on but I kept on pushing and I managed to get past Seb at the end. Another great win for me and possibly my best."

McLaren team principal Martin Whitmarsh said: "What a race. He is driving fantastically and we know he deserves it and hope everyone else does, too.

"He just attacked and attacked and delivered a fantastic race. We knew he had to put pressure on Sebastian - and Sebastian made a mistake. From Jenson, that's the stuff of champions, that's the stuff of dreams."

Vettel conceded ruefully: "If you have it in your hands and give it away it is not the sweetest feeling."

BBC F1 commentator Martin Brundle said: "At one point, we were wondering if Button would catch the Hispanias before the race restarted under the safety car and now he's won the race!

"That is one of the races of his life and the best grand prix of a spectacular career."

Co-commentator David Coulthard added: "What a fantastic drive from Jenson Button. It looked like it was all lost and he's well aware you count the winners at the chequered flag."

While Button celebrated, Hamilton left the track after an ignominious race that saw him drop from second to fourth in the championship.

Persistent rain through the morning left the track drenched and the race was started under the safety car.

The drama in one of the most sensational races for years began almost as soon as the drivers were released on lap five, and Hamilton was at the centre of it.

First he collided with Webber, who gave him room at the first corner only for the McLaren to slip off the kerb and into the Australian.

Webber spun and Hamilton had to go around the outside of the Red Bull, rejoining behind Button. Determined to make up ground, Hamilton pressed his team-mate hard. Button made a mistake at the final chicane at the end of lap eight and Hamilton saw his chance.

He dodged out from behind Button to his team-mate's left but Button continued on the racing line, edging towards the pit wall, apparently looking in his mirror. Hamilton kept coming and became pincered between Button and the pit wall. The two cars collided, spraying debris over the track.

"What is he doing?" screamed Button on his radio. After the race, he said he had not seen Hamilton but that they had spoken in the two-hour stoppage and agreed it was "just one of those things".

Hamilton said: "While I fell back behind Jenson, he made a mistake into the last corner, so I got the run on him.

"I was on the outside, it felt like I was halfway up alongside him - although I haven't seen the video - and whether he saw me or not he kept moving across, and I was in the wall. It was only the tyre that was busted. I put the 'diff lock' on and the team told me to retire."

Canadian Grand Prix result:
1. Jenson Button (GB) McLaren-Mercedes
2. Sebastian Vettel (Ger) Red Bull-Renault
3. Mark Webber (Aus) Red Bull-Renault
4. Michael Schumacher (Ger) Mercedes GP
5. Vitaly Petrov (Rus) Renault
6. Felipe Massa (Brz) Ferrari
7. Kamui Kobayashi (Jpn) Sauber
8. Jaime Alguersuari (Spa) Toro Rosso-Ferrari
9. Rubens Barrichello (Brz) Williams-Cosworth
10. Sebastien Buemi (Swi) Toro Rosso-Ferrari

Championship standings:
1. Sebastian Vettel (Ger) Red Bull-Renault 161 pts
2. Jenson Button (GB) McLaren-Mercedes 101
3. Mark Webber (Aus) Red Bull-Renault 94
4. Lewis Hamilton (GB) McLaren-Mercedes 85
5. Fernando Alonso (Spa) Ferrari 69
6. Felipe Massa (Brz) Ferrari 32
7. Vitaly Petrov (Rus) Renault 31
8. Nick Heidfeld (Ger) Renault 29
9. Michael Schumacher (Ger) Mercedes GP 26
10. Nico Rosberg (Ger) Mercedes GP 26

Constructors' championship:
1. Red Bull-Renault 255 pts
2. McLaren-Mercedes 186
3. Ferrari 101
4. Renault 60
5. Mercedes GP 52

BBC Sport