Ryan Nugent-Hopkins and Leon Draisaitl scored for the Oilers, who have lost four straight.
“It seemed like every mistake that we made in the first period, they made it count,” Oilers forward Milan Lucic said.
“It was a tough one to come back to after the Christmas break. We have dug ourselves a little bit of a hole the last four games and we can’t afford to keep digging it. We have to find a way out, and it isn’t going to take just one or two guys, it is going to take everyone.”
Oilers goalie Mikko Koskinen gave up all four goals and made just two saves before being replaced by Cam Talbot, who stopped all 14 shots he faced.
Jacob Markstrom made 30 saves in the win for the Canucks.
“This is how it should feel,” Markstrom said. “Winning shouldn’t be something you celebrate. It should be normal. … Winning should be normal, and in this organization we had that for a long time. That’s what we’re working to get back.”
Vancouver started the scoring with a goal on their first shot four minutes into the opening period. Motte took a feed in the slot and beat Koskinen for his sixth goal of the season.
The Canucks scored on their second shot, too, when, just a few minutes later Pettersson passed in front to Boeser, who scored his 13th goal.
Edmonton got one of those goals back midway through the first period, when Connor McDavid found Nugent-Hopkins in front for a power-play goal. It was the first time in 10 games that Vancouver had allowed a power-play goal.
Vancouver made it 3-1 with just over a minute left in the first, scoring on its fifth shot, when Pettersson tucked the puck under Koskinen’s arm for his 18th goal of the season.
The Canucks got their fourth goal on their sixth shot at 19:49 off a giveaway in front, which Roussel put away for his fourth goal.
It was the first time in nine years that Vancouver scored four goals in the first period of a road game.
Talbot started the second period in the Edmonton net.
Edmonton clawed back with a second power-play goal seven minutes into the second period on a wrist shot by Draisaitl.
NOTES: The Oilers outshot the Canucks 32-20 in the game. … It was the second of four meetings between the teams this season, with the Canucks defeating Edmonton 4-2 on Dec. 16. The next meeting will be Jan. 16 in Vancouver. … Oilers forward Alex Chiasson left the game after taking a shot off of the knee in the first period and did not return.