Shean Donovan and Chuck Kobasew also scored, Matthew Lombardi converted a short-handed penalty shot and Jarome Iginla had two assists for Calgary.

Miikka Kiprusoff made 23 saves for his 37th win of the season as the Flames (41-24-8) moved two points ahead of the Avalanche (40-25-8) for first place in the Northwest Division.

Joe Sakic scored twice, 25 seconds apart in the first period, and Cody McCormick added a goal in the third for Colorado. Milan Hejduk assisted on both of Sakic's goals.

Trailing 2-1 after one period, the Flames came out and dominated in the second, outshooting the Avalanche 12-3.

Chris Simon tied the score on a disputed goal at 3:05. Byron Ritchie centered the puck from behind the goal line to Simon, who was driving toward the net while being tied up by Colorado forward Jim Dowd. The puck bounced into the net past goalie Peter Budaj off Simon's skate. After a short review, the goal stood.

MacDonald then put the Flames up when he swatted a pass from Donovan past Budaj at 12:14. Iginla set up Langkow for an easy tap-in goal to make it 4-2 with 1:15 to go.

After McCormick scored to pull Colorado within one nearly 6 minutes into the third, Donovan scored into the top corner over Budaj's outstretched glove hand near the midpoint of the period.

Lombardi rounded out the scoring with his penalty shot goal with 8 1/2 minutes left.

Kobasew opened the scoring for Calgary with a power-play goal 3:11 into the game. After taking a pass from center Matthew Lombardi, Kobasew circled behind the net and then out front before directing a shot off the back of Budaj's leg and into the net.

Sakic tied the game during a Colorado power play at 14:26 when he took a pass from Hejduk and quickly backhanded a shot past Kiprusoff.

On his next shift, Sakic slapped in a rebound past Kiprusoff to put the Avalanche up 2-1.

Notes: Sakic stretched his point streak to nine games. He has eight goals and nine assists during that stretch. Sakic is now one goal behind Mike Bossy (573) for 17th place on the NHL's all-time goal-scoring list. ... Although Calgary forward Darren McCarty dressed for the game, he didn't take a shift because of a groin injury. ... The Flames were without defensemen Jordan Leopold (groin) and Rhett Warrener (knee) and forwards Mike Leclerc (wrist), Marcus Nilson (knee) and Jamie Lundmark (eye). ... Colorado defenseman Karlis Skrastins stretched his consecutive games played streak to 425 contests, which is the second longest streak among defensemen in NHL history behind Tim Horton's mark of 486.