Garland took the puck wide left before snapping a shot by Dustin Wolf‘s glove in the bottom of the fourth round of the shootout. His goal came after Kevin Lankinen stopped Yegor Sharangovich‘s deke with his left pad.
Elias Pettersson tied it 3-3 at 13:16 of the third period for Vancouver when he put a rebound by Wolf after he made the initial stop on Victor Mancini‘s point shot.
Pettersson had a goal and an assist, and Jake DeBrusk and Pius Suter scored for the Canucks (30-24-11), who had lost two straight and four of six. Lankinen made 20 saves.
Vancouver captain Quinn Hughes had an assist in his return after missing four games with a lower-body injury.
Jonathan Huberdeau had two goals, Nazem Kadri had a goal and an assist, and MacKenzie Weegar had two assists for the Flames (30-23-11), who have points in five straight (2-0-3). Wolf made 28 saves.
Suter put Vancouver up 1-0 at 13:33 of the first period. His initial one-timer was blocked by Joel Hanley, but his second attempt deflected off Hanley’s skate and by Wolf.
Kadri tied it 1-1 at 17:53 with a deke by Lankinen’s right pad after being sprung on a partial breakaway by a stretch pass from Rasmus Andersson.
DeBrusk gave the Canucks a 2-1 lead at 10:32 of the second period when he tipped Hughes’ point shot by Wolf’s glove on the power play.
Huberdeau tied the game 2-2 at 13:58 when he chipped a pass from Kevin Rooney over Lankinen’s left pad on a short-handed 2-on-0 and put the Flames ahead 3-2 at 16:01 with a wrist shot over Lankinen’s right shoulder on the power play.