The loss came in the fifth game in seven days for Calgary, the Flames winning three and dropping two.
The Avs were coming in with a few days rest after losing 2-1 to the Coyotes on Thursday.
Dan Vladar got the nod in net, his third start of the week. He made 33 saves in the overtime win over Colorado last Saturday and had 22 stops in the 5-4 loss to the Caps on Tuesday.
He was outstanding Sunday, finishing with 30 saves, many of the Grade-A variety.
Darcy Kuemper - who was pulled after after allowing three goals on 15 shots in the first outing against the Flames - recorded the shutout with 46 saves. He stood tall in the third period when the Flames pressed right to the final whistle, outshooting the Avs 22-10 over the final 20 minutes.
Nathan MacKinnon scored pair for the Avs, while linemate Mikko Rantanen iced it with a late empty-netter.
Michael Stone played his second straight game with Oliver Kylington out with injury and listed as day-to-day.
Earlier Sunday, the Flames assigned centre Adam Ruzicka to the Stockton Heat and recalled blueliner Connor Mackey.
The Avs, meanwhile, were without captain Gabriel Landeskog, who is slated to undergo knee surgery Monday, and defenceman Sam Girard, who is out with a lower-body injury.
MacKinnon opened the scoring on the powerplay at 9:55, firing a puck from the left wing, finding a hole shortside over the pad and under the blocker of Vladar for his 20th of the season.
Elias Lindholm came close to tying it up in the final minute of the frame, smacking the puck a few times in tight, the biscuit squirting through the legs of Kuemper but Devon Toews was right there to sweep it away before it crossed the line.
The teams traded chances in the second, with Vladar making two monster saves to keep the deficit to one: first he stoned Erik Johnson, then later he came across his crease to stop a point-blank tip on the doorstep by MacKinnon.
The Avs centre tallied again four minutes into the third, though, cashing in after a faceoff in the Calgary zone.