Kessel, preparing to help lead the American squad next week at the Winter Olympics in Sochi, Russia, potted a wrist shot from the high slot for his 31st goal midway through the final period, breaking a 1-1 tie.
Jonathan Bernier made 32 saves.
Ryan Kesler scored for the Canucks, who dropped a seventh straight in regulation -- their longest such streak since 1998-99.
Roberto Luongo turned aside 21-of-24 shots.
Aaron Carter is still in love with Hilary Duff
Boston schools pull out free condoms over wrapping complaints