Alex Edler, Zack Kassian, and Jeremy Welsh -- with his first career NHL goal -- also scored as the Canucks snapped a five-game losing streak and handed Columbus its fifth loss in seven games.
Vancouver had scored only six goals over its previous five games -- and was held to one goal in four of them. Daniel Sedin's points snapped a six-game pointless drought -- his first such streak since 2002-03.
Canucks goalie Roberto Luongo only had to make 14 saves as Vancouver outshot Columbus 35-16.
Matt Calvert and Artem Anisimov scored for the Blue Jackets, and Sergei Bobrovsky had 29 saves.
In a bid to get more scoring, Canucks coach John Tortorella split up the Sedins at times, and played them together at others. The moves worked as Vancouver outshot Columbus by a wide margin in the first 19 minutes and were finally rewarded with a goal in the closing seconds of the first period.
Calvert opened the scoring on a fine individual play -- and his club's first shot -- 2:47 into the game. He bumped Zack Kassian off the puck, eluded Edler as he rushed to the net and then, after forcing Kevin Bieksa to back off and play a possible 2-on-1, tucked in his own rebound.
It was the first goal of the season for Calvert, playing just his fourth game after missing the first 19 with an abdominal injury.
Daniel Sedin tied it with 16 seconds left in the first period as he circled the net and beat Bobrovsky with a high wrist shot from a sharp angle.
Kassian put the Canucks ahead 2-1 with 7:55 left in the second period as Bobrovsky somehow let the puck trickle through him as he had the angle well-covered and Kassian shot right at him.
Henrik Sedin gave the Canucks a 3-1 lead with 6:01 left in the period as he jammed in his own rebound after Bobrovsksy stopped Daniel Sedin's high shot. Edler scored 16 seconds later as his shot was deflected by a Columbus player and went in off the goal post.
Henrik Sedin got credit for his second goal of the night after Daniel Sedin's shot from the point appeared to hit him and Columbus defenceman Nikita Nikitin.
The Canucks were awarded a penalty shot after Fedor Tyutin pulled him down as he tried to go wide on what the officials deemed was a breakaway. However, Bobrovsky easily stopped Hansen on the penalty shot as the Vancouver forward fired the puck right at him.
Anisimov scored 25 seconds later to reduce Vancouver's lead, but Welsh scored in the final minute, enabling the Canucks to match the number of goals they scored during their losing streak.
NOTES: Both teams entered the game with no players on a scoring streak. ... Unproductive Canucks winger David Booth was scratched for the second straight game. ... Columbus C Brandon Dubinsky was sent home due to a foot injury and missed his second consecutive game. Second-leading scorer James Wisniewski sat out with the flu.