Kassian scored the decisive shootout goal by deking Flames goalie Miikka Kiprusoff in the fifth round. Alex Burrows also scored in the shootout for Vancouver, and Cory Schneider secured the win by stopping Curtis Glencross on the final shootout attempt.
Mason Raymond also scored for the Canucks (1-1-1), giving them a 2-0 lead about halfway through the second period.
Alex Tanguay scored in regulation and had one in the shootout for Calgary (0-2-1), and Mikael Backlund had the tying goal with just under 4 minutes to go in the second period.
Schneider and Kiprusoff entered the game looking to redeem themselves. Despite a few gaffes, Schneider was much sharper than in his season-opening effort as he and Kiprusoff both finished with 34 saves.
Schneider was pulled after allowing five goals on 14 shots in Vancouver's 7-3 loss to Anaheim on Saturday, and then watched from the bench as the Canucks lost Sunday in a shootout to Edmonton.
Kiprusoff was sharp in a second period in which the Canucks badly outshot the Flames until the late going. He had allowed nine goals in losses to the Ducks and San Jose.
Schneider got off to a bit of a shaky start as he mishandled a slow shot that got tangled in his skates in the goal crease. He also caught a break during a Calgary power play after Jay Bouwmeester's shot rang off the post after deflecting off Canucks defenseman Alex Edler's stick in the air.
Vancouver's Alex Burrows, usually a winger on the first line, played center on the second line and showed some deft passing in the final six minutes of the first period as he sent Jannik Hansen in all alone on Kiprusoff, only to have the Calgary goaltender stop his shot. Burrows also set up Hansen for a one-timer in the high slot, but Hansen could not get much weight on the puck.
In the final minute of the first period, Schneider stopped Blake Comeau from close range and then blocked three shots in succession, by Bouwmeester, Jarome Iginla and Tanguay, to keep it scoreless.
Kassian opened the scoring 6:20 into the second on a good third effort. He intercepted a Calgary hand-pass, retrieved the puck after his first shot was blocked, and then fired it home. It was Kassian's second goal of the season.
Raymond put the Canucks up 2-0 on a power play exactly 2 minutes later.
Tanguay pulled the Flames within a goal at the 11-minute mark as he clanked a shot in off a goalpost. It was only Calgary's third shot of the period, while the Canucks had 15 in the period at that point.
A little while later, Schneider got his pad on a puck during a scramble to deny the Flames. A video review upheld the referees' decision that the puck did not go in.
However, Calgary tied it as Vancouver took three penalties in a span of 2:17.
During the stretc, Calgary had a two-man advantage for 1:03 but could not score, and then had another one for 41 seconds. Again, the Flames were denied, but Alex Edler continued Vancouver's penalty string by closing his hand on the puck.
With the Flames enjoying a man-advantage opportunity, Backlund beat Schneider with a shot low to the stick side.
The Canucks got their sixth power play of the game with just under 6 minutes left as Blair Jones was sent off for tripping Chris Tanev into the side boards. But Vancouver could not capitalize and had to endure overtime and a shootout for the second straight game.
NOTES: Canucks defensemen Cam Barker and Andrew Alberts were scratched for the third straight game. ... Calgary center Jiri Hudler remained out on bereavement leave following the death of his father. ... Flames defenseman Chris Butler and center Roman Horak were scratched after playing the first two games of the season.