The Briton, who won the last round of the championship in Turkey but has not snared a pole position since Abu Dhabi last year, lapped the Circuit Gilles Villeneuve in one minute 16.058 seconds in his McLaren, just 0.282 ahead of Australia's championship leader Mark Webber, who has been on pole in each of the last three races.
Spain's Fernando Alonso was third quickest overall, showing the steady improvement of the Ferrari, while Germany's Michael Schumacher was fourth for Mercedes.
Webber's Red Bull team-mate Sebastian Vettel of Germany was fifth after topping the timesheets on Friday while Hamilton's British team-mate and reigning world champion Jenson Button was eighth after struggling with his tyres during the 60-minute session under overcast skies.
Despite overnight rain and complaints about the lack of grip on the Montreal street circuit, the top drivers pushed their cars harder than in Friday's two practice sessions, with Hamilton and Brazilian Felipe Massa both surviving unscathed after brushing the concrete barriers.
Brazilian Lucas di Grassi spun at the end of the session after clipping a wall but there were no major incidents.