After Alexandre Burrows and Ryan Kesler each scored for Vancouver to open the first period, Phoenix's Rostislav Klesla and Shane Doan responded with goals to kickstart the Coyotes comeback.
Oliver Ekman-Larsson and Gilbert Brule recorded second-period goals to put the visitors ahead 4-3 before Antoine Vermette stretched the lead to two in the third.
Dan Hamhuis netted a shot to get the Canucks back within one with about eight minutes remaining but they could not find the equaliser as they fell to their fourth loss in five games.
Vancouver (42-20-8), second in the Western Conference, failed to gain ground on St. Louis who they trail by six points.
Phoenix (35-25-11) narrowly hold onto seventh, a point ahead of Colorado.
"The standings are very tight, nobody is going to help you out, everybody is in a battle and getting points out of every game, so it's in our hands," Vermette said after also chipping in two assists.
"We have to earn it and find a way to get the points."
Coyotes' second leading scorer Radim Vrbata was a late scratch because of an illness but the team had plenty of contributions including three assists from Ray Whitney.
Mike Smith made 39 saves for Phoenix while Roberto Luongo had 28 for Vancouver.
"I thought we generated a lot of offence, which is good, (but) we have to play a patient game," Luongo said. "That's the way we're going to win. Sometimes you've got to sacrifice some offence."