Daniel Sedin, Chris Higgins, Ronalds Kenins and Radim Vrbata -- into an empty net -- scored for the Canucks, who snapped a seven-game losing streak at home in the playoffs dating to the 2011 Stanley Cup final.
Kris Russell scored late in the third period for the Flames to end Lack's shutout bid.
Calgary hosts Game 3 on Sunday.
The physical game was capped by a full brawl late in the third with fights erupting all over the ice deep in the Vancouver zone after a whistle.
In what Daniel Sedin described as a "must-win game" earlier in the day, the Canucks came out flying and grabbed the lead just 2:56 into the first period in front of a raucous and towel-waving crowd at Rogers Arena.
Henrik Sedin found an opening to feed his twin brother, who roofed a shot on Hiller for his first playoff goal since Game 2 of the 2011 Stanley Cup -- a stretch of 13 contests.
The Canucks, who lost consecutive games in regulation just once after the All-Star break, doubled the lead at 7:06 on the power play when Higgins snapped a playoff scoring slump of his own by banging home a loose puck from the slot. The goal was his first in the postseason since Game 2 of the 2011 Western Conference semifinal -- a span of 20 games -- and his first point in 16 playoff contests.
Apart from its terrible recent playoff home record, Vancouver had also lost six straight in the postseason and 11 of its last 12 before Friday.
Lack faced just three shots in the first, but had to defend himself in the second after making a save off a scramble in front. Brandon Bollig piled into the Vancouver goalie in a scrum only to see Lack respond with blocker punches in the melee as fans chanted "Eddie! Eddie!"
Yannick Weber came close to making it 3-0 for Vancouver with 5:45 left in the second when his shot from the point rang off the post behind Hiller.
Calgary came from behind to win when trailing after 40 minutes an impressive 10 times this season and accomplished the same feat in Game 1, but Kenins scored his the first playoff goal of his career 2:17 into the third before Russell buried his second of the series for Calgary at 16:26 on a power play to cut the lead to 3-1.
Vrbata scored into an empty net with 2:01 remaining before all 10 skaters dropped their gloves, including Vancouver's Brad Richardson taking on Calgary's Matt Stajan, and Engelland squaring off with the Canucks' Derek Dorsett.
Vancouver went 1 for 3 on the power play, while the Flames failed to convert on their only chance with the man-advantage. ... The Flames are without five regulars, including injured captain and top defenseman Mark Giordano.