Elias Pettersson had two assists for Vancouver (26-18-4), which has won 10 of its past 13 games. The Canucks averaged 4.4 goals while going 9-3-0 in their previous 12 games but expected a tighter-checking game against the Coyotes.
"We knew it was going to be that type of game," Canucks forward Bo Horvat said. "They play a really structured game and play well defensively. I thought we did a great job sticking to our systems and not pushing too hard. We capitalized on our opportunities and that was the difference."
WATCH: [All Coyotes vs. Canucks highlights]
Vancouver, coming off a 2-3-0 road trip, has won seven games in a row at home.
"Especially with a young team, there's something to be said about playing at home and being excited to play at home," Canucks coach Travis Green said. "Eventually you want to have a team that plays well on the road and at home but man, we've been sharp here."
Christian Dvorak scored, and Adin Hill made 22 saves for the Coyotes (26-19-5), who are 1-3-1 in their past five games.
"It was a pretty solid game here for us but there's no moral victories, especially at this time of year, so it's a tough one to lose," Dvorak said. "We were playing our game pretty much the full 60 and just couldn't really find the second one, which is tough, but can't get frustrated here."
Jake Virtanen gave Vancouver a 2-1 lead at 15:49 of the second period on a wraparound when the puck deflected in off Hill's left skate as he tried to get back to the far post.
"I just saw the goalie overcompensate a little bit," Virtanen said. "I took a quick glance up. In junior I used to do that wraparound move. I thought I would try it out and it worked."