The 28-year-old Briton produced a magnificently judged performance in a race that passed off smoothly despite a weekend of student protests and police action resulting in around 60 arrests in the city, to seize his first win of the year.
Frenchman Romain Grosjean of Lotus came home second after an equally well-judged race to finish ahead of third placed Mexican Sergio Perez of Sauber.
Hamilton's triumph came five years to the day after he had claimed his maidenF1 victory at the Circuit Gilles Villeneuve and was his third win at what must be one of his favourite circuits.
It was his 18th career victory and it hoisted him back into serious contention for the drivers' title in this year of unexpected results and unpredictable racing.
Hamilton, who now leads with 88 points, said: "I knew today would be a tough, tough race.
"I loved every single minute of it and I'm really very, very grateful. I never had a doubt in mind that there would not be a possibility to win.
"But right now, it's still sinking in. It's been five years since I first won here but it feels just as good. I'm massively proud of the team for continuing to push. It feels great to finally be here on the top step. It feels like one of best races I've had for a very long time.
"I was thinking they (Sebastian Vettel and Fernando Alonso) were falling behind and I assumed they were doing a one-stop so I decided to keep pushing. We had a couple of problems during the stops, they may have been my fault I don't know, but otherwise it was a great race."
Hamilton, still wearing his helmet, celebrated by embracing his girlfriend former Pussycat Dolls pop singer Nicole Scherzinger and soaking McLaren team chief Martin Whitmarsh in champagne on the podium.
Grosjean was delighted with his best-ever F1 result and said: ""We thought about going for one stop and seeing what happened. Then suddenly I went past Fernando Alonso who was slowing, and I was second. It was a crazy race. The team did a fantastic job in giving me a car that was good on its tyres. We knew with the heat today we would be better. It's fantastic."
Perez said: "When you start 15th, you don't expect to get a podium finish, but we went off very aggressively, and I managed to overtake a few cars - the tyre degradation was not bad for me, and I managed to keep moving up the field so this is a great boost for the team."
Defending double world champion Vettel of Red Bull finished fourth after a late second pit stop ahead of two-time champion Alonso of Ferrari and sixth-placed Nico Rosberg of Mercedes.
Australian Mark Webber was seventh in the second Red Bull ahead of Kimi Raikkonen, the 2007 champion, in the second Lotus, and Japanese Kamui Kobayashi of Sauber and Felipe Massa for Ferrari.
"Winner, winner! Well done you guys, thank you, thank you," said Hamilton on team radio during his slowing down lap after finishing clear of Grosjean by more than 2.5 seconds.
Hamilton's McLaren team-mate, 2009 champion Jenson Button, endured another troubled race and finished 16th while seven-times champion Michael Schumacher was forced into early retirement by mechanical problems with his Mercedes.
On another hot day in Montreal police reported the arrests of around 30 protesters in the hours before the race as Canadian students rallying for months over tuition hikes used the Formula One showpiece to highlight their cause.
Late Saturday, shield-wielding riot police had pushed back and chased hundreds of protesters amassed in the downtown shopping district, making 28 arrests.