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 bost, 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.