The win, Vancouver's second over Calgary in as many nights, propelled the Canucks into first place in the tight Northwest Division. Salo took a pass from defence partner Mattias Ohlund and outwaited goalie Miikka Kiprusoff before blasting a shot from the tip of the face-off circle past the Flames netminder. Daniel Sedin, Henrik Sedin, Matt Cooke, Brendan Morrison and Ryan Kesler also scored for the Canucks.
Kristian Huselius led the Flames with two goals. Byron Ritchie, David Moss and Daymond Langkow had the others.
The Canucks, a perfect 5-0 in overtime this season, climbed over .500 to 19-18-1 with their fifth straight home victory.
Calgary, 0-2 in games decided by the extra period, lost their third straight to fall to 17-14-4 and remain in the division cellar.
Kesler forced overtime with 3:40 remaining in the third period when he took Markus Naslund's pass from the side boards and knocked in his own rebound.
Langkow had given the Flames a 5-4 lead on the power play when he was left all alone in front of netminder Roberto Luongo and fired the puck under him.
Vancouver couldn't hold a two-goal lead early in the period as the opportunistic Flames rallied for a 4-4 tie with goals one minute 21 seconds apart.
Huselius scored his second of the game and 13th of the season on a close-in chance after Vancouver defenceman Kevin Bieksa was stripped of the puck.
Moss scored at 2:12 of the third to forge the game's second tie.
He scored his third goal in four games from a scramble in front of the Vancouver goal and got a backhand away as he was spun around and falling.
The Canucks took a 4-2 lead into the third after Cooke, with his first goal in 26 games, and Morrison scored shorthanded to snap a 2-2 tie.
Cooke took a short pass from Trevor Linden at the Vancouver blue-line and drove for the Calgary net. His backhand eluded Kiprusoff's blocker.
Morrison finished a 3-on-2 Canuck break-in after Calgary defenceman Mark Giordano gave up the puck at his own blue-line.
The Flames had tied the game by the 10-minute mark of the second with goals 1:05 apart by Ritchie and Huselius.
Ritchie beat Luongo when he took Tony Amonte's pass as he stepped into the Vancouver zone and unleashed a quick wrist shot from 15 feet.
Huselius then banked a rebound in off Luongo during another scramble in front of the Canuck goal.
The Canucks capitalized on the first power play of the game and had a 2-0 lead after 20 minutes. The Sedins provided the offence as Vancouver outshot the Flames 15-8.
Daniel Sedin scored his 13th goal of the season and fourth in three games when he put the rebound of a Kevin Bieksa point shot behind Kiprusoff, who was out of position.
Henrik Sedin had another open net to shoot at when he took his brother's pass after Daniel Sedin left the Vancouver zone in full stride.
NOTES: Alex Burrows, who hasn't scored in 45 games, was out of the Vancouver lineup with a sore hip . . . The Canucks entered the game with the league's best home-ice penalty kill . . . Vancouver continues to face Northwest Division foes Saturday in Edmonton. The Canucks meet the Flames again Jan. 2 in Calgary prior to a four-game homestand.