Alex Burrows and Kevin Bieksa also scored for the Canucks, who ended a three-game losing streak (0-1-2), including a 4-3 decision to the Stars in Vancouver on Feb. 15.
Cory Schneider made 22 saves for the win.
Jamie Benn, Michael Ryder and Brenden Morrow scored for Dallas, which lost for the third time in its past four games.
Cristopher Nilstorp, who was recalled from AHL Texas on Sunday, stopped 18 shots.
The Canucks broke a 2-2 tie by scoring twice within a 1:46 span early in the third period.
Garrison snapped the tie at 2:32 when his slap shot from the left point beat a screened Nilstorp over the blocker for his second goal of the season, giving the Canucks their first lead of the game.
Henrik Sedin got his second of the season at 4:18, completing a pretty passing play with Burrows on a 2-on-1 rush with an easy tap-in into an open net.
Dallas made it 4-2 at 6:07 of the third, when Morrow stripped the puck off Ryan Kesler's stick in front of the Canucks' goal and quickly swept it past Schneider for his fourth goal.
The Stars had a late power-play opportunity when Bieksa was whistled for interference at 14:51, but Dallas was unable to muster a shot on goal during the advantage.
A Derek Roy hooking penalty with 2:01 remaining effectively negated any chance Dallas had at mounting a late comeback.
Benn put the Stars on top just 35 seconds into the opening period with a spectacular goal, his fifth of the season.
[to top of second column]
After picking up the puck at the left point, Benn stickhandled his way through four Canucks, working his way to the right side of the crease before lifting a wrist shot through a tiny opening over Schneider's shoulder.
Vancouver tied it at 1 on Burrows' power-play goal at 8:29. Seconds after Daniel Sedin clanked a one-timer off the crossbar, Burrows camped out in front of the net and managed to deflect Alexander Edler's shot from the left point past Nilstorp.
Ryder's fifth of the season -- and first in nine games -- pushed the Stars back in front at 2:39 of the second. Just seconds after Nilstorp made a nice pad save on David Booth's wrist shot, the Stars raced down the other end and Ryder wound up with the puck in the slot. His backhand found its way through a screen in front and beat Schneider through the pads.
The Canucks tied it again at 7:05 when Bieksa notched his fifth goal. With the teams skating 4-on-4, Bieksa beat the Stars' defense, held off a poke-check attempt from Philip Larsen and slid a backhand through Nilstorp's pads.
Each goaltender made outstanding saves later in the second to keep the game at 2-2. Schneider made a nice skate save on Benn at 12:55 and Nilstorp denied Burrows' breakaway attempt at 17:35.
NOTES: Canucks LW Jannik Hansen served his one-game suspension for his roughing penalty that knocked Chicago's Marian Hossa out of their game on Tuesday. ... Dallas outshot the Canucks 25-22, marking the fifth time in its past six games Dallas outshot its opponent. The Stars had been outshot in each of their first 11 games. ... Former Dallas G Marty Turco was honored before the game for being voted to the franchise's all-time team and received a standing ovation when he dropped the ceremonial first puck.
Copyright 2013 The Associated
Press. All rights reserved. This material may not be published,
broadcast, rewritten or redistributed.