Rasmus Andersson had a goal and an assist, and Dan Vladar made 23 saves for the Flames (37-16-8), who bounced back from a 1-0 overtime loss to the Buffalo Sabres on Friday and are 4-1-1 in their past six games.
Calgary was eager to avenge a 7-1 loss at Vancouver on Feb. 24.
"We pretty much got embarrassed that night and this is our last game of the regular season here in this rink so we had one more crack at it to get them back and I thought the first period was big," Tkachuk said. "Looking at the small picture, we just want to come in and have a good first few shifts each and come out with the lead and I thought we did that and honestly rolled from there."
The Flames changed all four forward lines after the loss to the Sabres and outshot the Canucks 16-4 in the first period while jumping out to a 3-0 lead.
"Last night's game was probably one of the, if not the, worst game of the year, so I thought it helped and definitely helped in our first period," Tkachuk said.
Said Flames coach Darryl Sutter, "We're a team that has to kill plays. If we're going to try to make fancy plays and long plays, that don't work for our team. It's one of the reasons we changed lines up. There's getting to be too many 70-footers and home runs. You've got to touch all the bases. Tonight we had more guys doing it."