Henrik Sedin had a goal and an assist, and Ryan Kesler and Christian Ehrhoff also scored for Vancouver. The Canucks moved into sole possession of eighth place in the Western Conference, finishing an eight-game homestand with a 6-2 record.
Ryan Potulny scored for Edmonton. The Oilers have lost six in a row.
Early in the second, the Oilers gave the Canucks a 5-on-3 power play when Ethan Moreau was called for goalie interference and Potulny took a delay-of-game penalty.
Daniel Sedin opened the scoring off a pass from Henrik Sedin, firing a shot in off Oilers defenseman Sheldon Souray. Eighteen seconds later, with Potulny still in the penalty box, Kesler deflected in Alex Edler's point shot to make it 2-0.
Potulny then backhanded home a sharp-angle shot at 11:22 of the second.
Ehrhoff gave the Canucks a 3-1 advantage early in the third. He took a pass from Rick Rypien on a rush and roofed a backhander over goalie Jeff Deslauriers.
Henrik Sedin completed the scoring with an empty-net goal.
Canucks C Ryan Johnson missed the game because of a sore foot. ... Edmonton's Mike Comrie missed his 18th straight game due to mononucleosis. ... Vancouver tough guy Darcy Hordichuck returned to the lineup after sitting out three straight as a healthy scratch. ... Oilers winger Dustin Penner played his 299th NHL game.