Starting in pole position, in just his sixth race, the 22-year-old Hamilton became the first black driver to win in the sport and the first rookie since Colombian Juan Pablo Montoya for Williams in 2001.
German Nick Heidfeld was second for BMW Sauber with Alex Wurz of Williams taking third place at the circuit where he made his debut a decade ago.
Hamilton now leads the championship with 48 points, eight clear of team mate and double world champion Fernando Alonso who finished seventh.
Hamilton had finished on the podium in all five of his opening races before Sunday's race at the Circuit Gilles Villeneuve.
In an incident packed race, Ferrari's title contender Felipe Massa and Renault's Giancarlo Fisichella were disqualified while BMW's Polish driver Robert Kubica was taken to hospital after a horrific crash.
The safety car was deployed four times.
Hamilton showed great composure, while those around him were scraping into walls and pirouetting around corners, to confirm his status as a future champion.
Hamilton gained the upper hand over Alonso at the first turn when the Spaniard ran wide, sped over the grass and found himself stuck behind Heidfeld in third place.
By lap five Hamilton was 3.2 seconds clear of Heidfeld with Alonso trailing a further 1.2 seconds behind in third.
Alonso later received a 10 second penalty for entering the pit after the safety car had come out, effectively ending his chances.
Alonso's dismal day was completed when he was overtaken by Japanese driver Takuma Sato's Super Aguri with two laps remaining.
Kubica was flown by helicopter to hospital after his BMW hit a Toyota on the approach to the hairpin on lap 27 and took off, flying through the air and slamming into a concrete wall at high speed before barrel-rolling across the track.
Television reports said the Pole had broken a leg.