Sam Bennett scored his first NHL goal, and Brandon Bollig and Sean Monahan also had goals for the Flames, who hosted a playoff game for the first time since April 2009. Game 4 is also at Calgary on Tuesday night.
The 18-year-old Bennett gave the Flames a 3-1 lead at 2:14 of the third period. The fourth overall pick in the last year's NHL draft scrambled to the net on Joe Colborne's sharp-angled shot and slipped the rebound by Lack.
It was Bennett's first game in Calgary since he saw action in a preseason game Oct. 2. He underwent shoulder surgery later that month. He rejoined the Flames in time to make his NHL debut and record an assist in Calgary's regular-season finale. Bennett played in both playoff games in Vancouver.
With Canucks defenseman Yannick Weber serving a goaltender interference penalty and teammate Dan Hamhuis joining him in the box for an illegal check to Bennett's head, Monahan scored his first NHL playoff goal on Calgary's two-man advantage at 14:36.
Hansen pulled the Canucks within two goals with a snap shot that beat Hiller with 2:19 remaining.
After Game 2 ended with a brawl and 132 minutes in penalties assessed, the animosity resurfaced in a scoreless second period Sunday with jawing and shoving after whistles.
Calgary forward Johnny Gaudreau skated to the bench in pain after he was chopped across the arms by Hamhuis, but continued to play and assisted on Monahan's goal.
The Flames led 2-1 after the opening period on Brodie's goal at 15:02. A forecheck and screens courtesy of the line of Bennett, Colborne and Mikael Backlund gave Brodie the time and space to tee up a slap shot from just inside the blue line and beat Lack high stick side.
Matthias pulled Vancouver even at 9:09. With Hiller spinning onto his back to make the initial save during a goal-mouth scramble, Matthias batted the puck into the open net.
Bollig scored the first goal of the game at 6:35 - his first since Feb. 2. Left unchecked in the high slot, he beat Lack with a high wrister to the stick side.