Flame captain Jarome Iginla also picked up an assist and sparked his team with a first-period fight. Craig Conroy, shorthanded, and Kristian Huselius, with his third goal in six games, also scored for the Flames.
The Canucks went into the third period trailing 3-0 but battled back with goals from Brendan Morrison and Markus Naslund on the power play. Daniel Sedin had a chance to tie the game with seven seconds left.
Calgary (43-25-10) can clinch a playoff berth Tuesday night when they play the Colorado Avalanche at the Saddledome.
Vancouver (47-24-7) maintained a three-point lead over Minnesota atop the Northwest Division and the third overall seed in the Western Conference. Minnesota lost 2-1 to Colorado on Saturday.
The loss snapped a two-game win streak for Vancouver and was the first time in nine games that it hadn't gained at least a point.
Langkow opened the scoring at 4:07 of the first with his third goal in six games. He took a pass from Huselius and beat Vancouver's Roberto Luongo from a sharp angle with Calgary's first shot of the game.
Calgary broke open the game with goals 2:28 apart in the second.
Langkow was the architect of the short-handed goal. He collected a loose puck at the blue-line, starting 2-on-1 break. Langkow waited for Luongo to commitment himself, then slid a pass to Conroy who had an open net. It was Calgary's 14th short-handed goal of the season.
Huselius made it 3-0 at 3:38 of the second, collecting an Iginla rebound and putting it past Luongo. Langkow also earned an assist as Calgary scored it's third goal on just nine shots.
The game was just 2:34 old, and neither team had managed a shot on net yet, when Iginla began throwing punches with Vancouver defenceman Willie Mitchell. The two had collided in the corner earlier in the shift.
While Iginla and Mitchell battled, bringing a roar from the sellout crowd of 18,630, all the other skaters paired off. Vancouver's Jeff Cowan and Calgary's Wayne Primeau skirmished while Bryon Ritchie and Alex Burrows had a shoving match.
Later in the period, Flame defenceman Robyn Regehr sent Mitchell flying with a hip check.
Notes: Defenceman Mattias Ohlund missed his fourth straight game with a cut on his left elbow while fellow blue-liner Sami Salo sat out his second consecutive game with a groin injury. ...Dion Phaneuf was out of the Flames lineup with the flu. ...The Canucks have a chance to break the franchise record of 104 points in a season set in 2002-03. ...Vancouver's Jan Bulis needs four goals for 100 in his career.