Starting third on the grid, Vettel leapt off the line and into the lead, but a rushed pitstop under the virtual safety car let Hamilton back in front and Mercedes pulled off a one-stop strategy to perfection.
Nico Rosberg was the big loser of a frantic jump off the line, falling from second to 10th after being squeezed off the track by Hamilton.
Rosberg recovered to just a fifth-place finish - a spin on the final lap ending his hopes of taking fourth - and Hamilton has now closed to within nine points of his team-mate in the drivers' championship.
Valtteri Bottas was also successful with a one-stop strategy, taking a third-consecutive third place in Montreal, and Williams' first podium of 2016.
HAMMER TIME NOT NEEDEDDouble-defending world champion Hamilton was rewarded for patience for the second race in a row, having persevered with wet tyres to a winning effect in Monaco.
As in Monte Carlo, where Daniel Ricciardo's botched pitstop helped him, Ferrari errors played into Hamilton's hands, with Vettel's attempts to push hard in the closing stages resulting in costly lock-ups.
A common theme of the season reared its head again as Hamilton was sluggish off the line. However, rather than throwing him down the field, the Briton's obdurate defence at turns one and two pushed Rosberg into traffic.
FERRARI LET SEB DOWN AGAINHeading to Montreal with significant turbo and suspension improvements, Vettel had the package beneath him to challenge Mercedes.
Though that was in evidence, Ferrari were quick to call the four-time champion in under the virtual safety car after Jenson Button retired.
As Vettel trundled into the pitlane, the VSC was turned off, allowing Hamilton to hit his straps once again.
That left Vettel - the victim of poor strategic calls in Melbourne and Barcelona earlier this season - with a lot of work to do, closing in on the Briton before errors under-braking cost him.
SILVER ARROWS STRUGGLE IN TRAFFICRosberg looked like a fish out of water when rain hit the Monaco Grand Prix, and he again struggled to overcome a poor start.
After Hamilton's early-season struggles, and once again today, it is clear that the Mercedes' aero package is unable to handle the dirty air of traffic - perhaps no surprise given how much time they have spent leading the field over the past few years.
BOTTAS AND SAINZ SHINEWilliams have dropped from their placing as F1's third-fastest team this season as Red Bull have surged back into contention. However, strong calls on strategy - often a weak point - and control on tyres in cool conditions helped Bottas to a fine podium finish. Felipe Massa's DNF through engine failure the only black spot on their Sunday.
The drive of the day arguably came from Carlos Sainz Jr, who smashed into the Wall of Champions in qualifying, earning a five-point grid penalty with a new gearbox.
He earned two points after jumping up 11 places from 20th, however, making a two-stop strategy and late run on ultrasoft tyres count.
IN THE POINTS1. Lewis Hamilton (Mercedes) 2. Sebastian Vettel (Ferrari) +5.011secs3. Valtteri Bottas (Williams) +46.422s4. Max Verstappen (Red Bull) +53.020s5. Nico Rosberg (Mercedes) +62.093s6. Kimi Raikkonen (Ferrari) +63.017s7. Daniel Ricciardo (Red Bull) +63.634s8. Nico Hulkenberg (Force India) + 1 lap9. Carlos Sainz Jr (Toro Rosso) + 1 lap10. Sergio Perez (Force India) + 1 lap
TITLE STANDINGS1. Nico Rosberg (Mercedes) 1162. Lewis Hamilton (Mercedes) 107 (+9)3. Sebastian Vettel (Ferrari) 78 (+28)4. Daniel Ricciardo (Red Bull) 72 (+34)5. Kimi Raikkonen (Ferrari) 69 (+37)
1. Mercedes 2232. Ferrari 147 (+76)3. Red Bull 130 (+93)4. Williams 81 (+142)5. Force India 42 (+181)
NEXT UPA logistical nightmare is up next for the teams as they travel almost 9,000 kilometres to Baku for the innovative street circuit's European Grand Prix debut, which is in just seven days' time.