The Red Bulls of Sebastian Vettel and Mark Webber were also in the mix, but finished fifth after their strategy to start on the prime tyres backfired.
HamiltonÃ¢â‚¬â„¢s chance to claim victory came on lap 15 while he and Fernando Alonso were chasing the Toro RossoÃ¢â‚¬â„¢s SÃƒÂ©bastien Buemi for the lead.
Buemi led as the top teams pitted early to try to outmanoeuvre each other with fluid tyre strategies, but Alonso got caught going into the hairpin and Hamilton got a tow down the straight to the final chicane, taking the lead as Buemi pitted.
The Hamilton-Alonso battle was not over as McLaren pitted on lap 26. Alonso took the lead and should have emerged from his own pit stop ahead, but was caught behind HispaniaÃ¢â‚¬â„¢s Karun Chandhok and rejoined behind Hamilton.
Webber was still in the lead on the prime tyre and was able to build a lead of 11.8 seconds by lap 36, but still needed to pit for the option as Hamilton, Alonso, Button and Vettel battled to end the race on the primes.
By lap 44, WebberÃ¢â‚¬â„¢s lead had been cut to 6.6 seconds, and just four laps later, Hamilton and Alonso had caught Webber, with Hamilton taking the Australian into turn one at the start of lap 50.
Webber pitted at the end of the lap, dropping to fifth, while Hamilton immediately pushed on, and Button caught Alonso. Another hold-up behind Chandhok allowed Button the chance to take second in turn three of lap 55.
Alonso pushed Button for the duration of the race, but was unable to pass, while Hamilton pulled out enough quick laps to ensure he could look after the tyres and cruise home for his second win in Canada, and a second consecutive win this season. Alonso blamed backmarkers for him not winning the race.
It was a weekend to forget for Mercedes. Nico Rosberg was largely anonymous and finished sixth, while Michael Schumacher started thirteenth on the grid and was involved in a number of controversial incidents as he battled with very poor tyre stability.
Toro Rosso had a great afternoon with Buemi able to hold on to come home eighth ahead of the Force Indias of Vitantonio Liuzzi and Adrian Sutil who rounded out the points-scoring positions after late moves on Schumacher on the last lap.
HamiltonÃ¢â‚¬â„¢s victory takes him top of the driversÃ¢â‚¬â„¢ championship, three points ahead of team-mate Jenson Button, followed by Webber and Alonso.
Despite the prediction from many, there was no safety car period which was an unusual occurrence in MontrÃƒÂ©al, but tyres saved the day to provide a fantastic race.
There is plenty of work for the stewards who are investigating a number of post-race incidents. Felipe Massa has already been penalised 20 seconds for speeding in the pit lane.
Robert Kubica is under investigation for a dangerous move on Vitantonio Liuzzi while heading into the pit lane which could see him lose his seventh place, or be handed a grid penalty for the next race in Valencia.
An incident between Sutil and Kubica, and another between Rubens Barrichello and Jaime Alguersauri are also under investigation.
The momentum is now clearly with McLaren after successive one-two wins and Formula 1 heads to Valencia for the European Grand Prix in two weeks timeÃ¢â‚¬â€a strong circuit for both Ferrari and McLaren.
MORE: The latest football news
MORE: The latest tennis news
BIOGRAPHY: Nabil Fekir
BIOGRAPHY: Sokratis Papastathopoulos