Morrison's second goal was the winner as he buried Markus Naslund's cross-ice pass on the power play. Henrik Sedin gave Vancouver a 4-3 lead when Vancouver defenceman Mattias Ohlund kept the puck in the Colorado zone. His shot hit defenceman Ken Klee and diving goalie Jose Theodore couldn't control the rebound, leaving Sedin an open net. The goals came on Vancouver's first two shots of the third period.
Ian Laperriere made it close by deflecting Tyler Arnason's centring pass behind Vancouver netminder Roberto Luongo.
Daniel Sedin, with his 25th of the season, and Matt Cooke also scored for Vancouver, which won its fourth consecutive game and moved two points ahead of the idle Calgary Flames and left the Minnesota Wild three in arrears.
Andrew Brunette, with two goals, and Brad Richardson short-handed were the other Avalanche scorers.
The Canucks (34-21-4) have won five of their last six games to set the pace in the torrid race for their division lead and the likely third playoff seed in the Western Conference.
The Avalanche (28-27-4), last in the Northwest Division, lost for the eighth time in 12 games and nine points out of a playoff berth.
The teams were tied 3-3 entering the third period although an industrious Avalanche forecheck kept the Canucks pinned in their own end for much of the opening 40 minutes.
Morrison gave Vancouver a 3-2 edge with a backhand in traffic past Theodore, who had beaten Vancouver three times this season.
Brunette's second goal and third in two nights produced the game's third tie. John-Michael Liles' power-play point shot hit Paul Stastny and Brunette's skate before trickling behind Luongo.
The Canucks got out of the first period tied 2-2 despite being outshot 12-7 and giving up a shorthanded goal.
Brunette opened the scoring by tipping Karlis Skrastins' point shot through Luongo's legs.
Daniel Sedin equalized from Theodore's doorstep by jamming brother Henrik's pass into the goalie's pads. Theodore nudged the puck across the line with his right skate.
An ill-advised pinch at the Colorado blue-line by Kevin Bieksa led to the short-handed marker. Ben Guite chipped the puck to Richardson who broke in on Luongo and scored on a backhand.
Cooke counted his sixth of the campaign and second in as many games late in the period. He broke into the slot to take Morrison's pass and fire it over Theodore's glove.
NOTES: Rookie Wojtek Wolski, who took a hard hit Saturday night from Calgary's Craig Conroy, was out of the Avalanche lineup ... Vancouver forward Trevor Linden played his 1,300th NHL game ... he's seventh in games played among active players ... Vancouver returned diminutive centre Brandon Reid to AHL Manitoba after a three-game call-up ... the Canucks begin a four-game road trip Tuesday in Anaheim ... other stops are Los Angeles, Dallas and St. Louis.