Rain was forecasted for Sunday afternoon at the Gilles Villeneuve circuit so the race started behind the Safety car and all drivers were on extreme wet tyres.
Once the Safety car withdrew and real racing began, the first casualty of the race was (unsurprisingly) Lewis Hamilton who tried to overtake his team-mate along the pit straight, but had a collision when Jenson Button swerved to the left suddenly. Hamilton suffered rear-puncture and some suspension damage and was forced to retire. Button later explained that although he looked in this mirrors, he didn't realise his team-mate was there.
By lap 25, the rain was too heavy to continue racing due to lack of visibility and the race was red-flagged. At this point the Top 3 were VET, KOB, MAS. If the race had been called off at this point, half-points would have been awarded. Vettel would have won and have 155.5 WDC points. However the cars stayed on the grid and waited for the rain to stop.
At race re-start, there were more collisions and the second top team casualty was Alonso who tangled with Button and got beached on a kerb. With 20 laps to go, a dry line was appearing on the track and dry tyres were coming into their own. Button's 2-lap-old tyres were at the perfect operating mode to catch the drivers in front of him and he set the fastest lap of the race with 1min16.956. On the penultimate lap, watched by his team-mate in the hospitality area, he closed the gap to race leader Vettel and pressured him into making an error. Button pounced on the opportunity and took the lead and kept it till the waving chequered flag.
Kobayashi who had been running 6th was overtaken on the finishing line by a DRS-enabled Ferrari driven by Massa. Top 10: Button, Vettel, Webber, Schumacher, Petrov, Massa, Kobayashi, Alguersuari (first point scoring position this season), Barrichello and Buemi.