McLaren Mercedes driver Lewis Hamilton, of Britain, celebrates his victory after the Canadian Grand Prix at Circuit Gilles Villeneuve in Montreal.

Montreal - McLaren's Lewis Hamilton stormed to a Canadian Grand Prix victory on Sunday to become a magnificent seventh winner in seven Formula 1 races this season and seize the championship lead.

The Briton had to mount a ferocious charge after his second pitstop, banging in a series of fastest laps to reel in Red Bull's reigning world champion Sebastian Vettel and Ferrari's Fernando Alonso.

Frenchman Romain Grosjean was second in a Lotus, a career best, with Mexican Sergio Perez third in a Sauber after overtaking Alonso - a driver he may end up partnering next season if he continues to impress.

It was Hamilton's third win in Montreal, an island circuit where he took his first grand prix triumph in 2007, in five attempts.

The 2008 champion, who also stood on top of the podium in Canada in 2010, had his most worrying moments in the two pitstops - McLaren's weak point this season - but on the track he was unstoppable.

“What a great feeling, this is where I won my first Grand Prix and I knew today would be a tough, tough race but I loved every single minute of it,” said Hamilton, who now has 88 points to Alonso's 86 and Vettel's 85.

Brandishing the British flag as he stepped out of the car after a gripping finale, he hugged his mechanics while girlfriend Nicole Scherzinger kissed his visor.

“It's been five years since I won here the first time but it feels just as good. It feels great to be on the top step, we never take it for granted,” he said.

“This for me feels like one of the very best races I have had for a long time.”

Vettel had started from pole, just like last year, and led the early part of the 70 lap race but lost pace over the final laps to finish fourth in a grand prix that his Red Bull team have yet to win.

Spaniard Alonso, bidding to give resurgent Ferrari a victory on the 30th anniversary of the tragic death of former-Ferrari great Gilles Villeneuve but struggling on worn tyres at the finish, had to settle for fifth. - Reuters

1 Lewis Hamilton (Britain) McLaren - 1hour32min29.586
2 Romain Grosjean (France) Lotus +2.513sec
3 Sergio Perez (Mexico) Sauber +5.260
4 Sebastian Vettel (Germany) Red Bull +7.295
5 Fernando Alonso (Spain) Ferrari +13.411
6 Nico Rosberg (Germany) Mercedes +13.842
7 Mark Webber (Australia) Red Bull +15.085
8 Kimi Raikkonen (Finland) Lotus +15.567
9 Kamui Kobayashi (Japan) Sauber +24.432
10 Felipe Massa (Brazil)  Ferrari +25.272
11 Paul Di Resta (Britain) Force India +37.693
12 Nico Huelkenberg (Germany) Force India +46.236
13 Pastor Maldonado (Venezuela) Williams +47.052
14 Daniel Ricciardo (Australia) Toro Rosso +1min04.475
15 Jean-Eric Vergne (France) Toro Rosso +1 lap
16 Jenson Button (Britain) McLaren +1 lap
17 Bruno Senna (Brazil) Williams +1 lap
18 Heikki Kovalainen (Finland) Caterham +1 lap
19 Vitaly Petrov (Russia) Caterham +1 lap
20 Charles Pic (France) Marussia +3 laps
r  Timo Glock (Germany) Marussia +14 laps
r  Michael Schumacher (Germany) Mercedes +27 laps
r  Pedro de la Rosa (Spain) Hispania +46 laps
r  Narain Karthikeyan (India) Hispania +48 laps
1 Lewis Hamilton (Britain) McLaren 88
2 Fernando Alonso (Spain) Ferrari 86
3 Sebastian Vettel (Germany) Red Bull 85
4 Mark Webber (Australia) Red Bull 79
5 Nico Rosberg (Germany) Mercedes GP 67
6 Kimi Raikkonen (Finland) Renault 55
7 Romain Grosjean (France) Renault 53
8 Jenson Button (Britain) McLaren 45
9 Sergio Perez (Mexico) Sauber 37
10 Pastor Maldonado (Venezuela) Williams 29
11 Kamui Kobayashi (Japan) Sauber 21
12 Paul Di Resta (Britain) Force India 21
13 Bruno Senna (Brazil) Williams 15
14 Felipe Massa (Brazil) Ferrari 11
15 Nico Hulkenberg (Germany) Force India 7
16 Jean-Eric Vergne (France) Toro Rosso 4
17 Daniel Ricciardo (Australia) Toro Rosso 2
18 Michael Schumacher (Germany) Mercedes GP 2
1 Red Bull 164
2 McLaren 133
3 Lotus 108
4 Ferrari 97
5 Mercedes 69
6 Sauber 58
7 Williams 44
8 Force India 28
9 Toro Rosso 6