Dion Phaneuf and Alex Tanguay scored first period goals as the Flames opened up an early lead and and went on to a 3-2 victory.
Moss opened the scoring on a power play just 56 seconds into the game. Matthew Lombardi won a face-off back to Phaneuf, whose wrist shot from the blue-line beat Ilya Bryzgalov.
The eventual game-winner came at 11:58 when Tanguay made it two goals on five shots, Scoring his 12th of the season on a wrist shot that squeaked in under the arm of a shaky-looking Bryzgalov.
Stephane Yelle also scored for Calgary (25-17-4), which was coming off consecutive road losses in Nashville and Dallas. The Flames have won five straight at the Pengrowth Saddledome and are a league-beat 19-5-0 at home this season.
Calgary moved to within two points of the Vancouver Canucks, leaders of the Northwest Division. They also improved to 5-2-0 without leading scorer Jarome Iginla, who will be sidelined at least two more weeks with a sprained left knee.
Scott Niedermayer scored both goals for Anaheim (30-12-8), which limps into the NHL all-star break losers of four in a row and nine of its last 11 (2-7-2). The Ducks' lead atop the Pacific Division is down to four points, and the trailing San Jose Sharks hold three games in hand.
Anaheim continues to play without defencemen Chris Pronger (foot) and Francois Beauchemin (spleen), who missed their ninth and 11th games respectively. Niedermayer is also banged up with a stress fracture in his foot that will keep him out of next week's NHL All-Star Game.
Trailing 3-1 headed to the third, Anaheim climbed back within a goal 1:29 into the period when Andy McDonald's shot deflected in off Niedermayer in front, the goal coming just seconds after a Calgary penalty had expired.
It was the 11th career two-goal game for Niedermayer, who has never had a hat-trick in his 15 NHL seasons.
The Ducks had a couple of dangerous opportunities to tie it late in the game but could not beat Calgary goaltender Miikka Kiprusoff, who finished the night with 22 saves.
Calgary increased its lead to 3-0 at 9:25 of the second period when Yelle got the puck at the top of the crease and made a pretty move around Bryzgalov before sliding in his third goal of the season and second in as many games.
Anaheim got on the scoreboard at 15:05 of the second, taking advantage of a two-man advantage with Niedermayer whipping a wrist shot inside the goal post.
Despite the shaky beginning, Bryzgalov settled in and made some excellent saves over the final two periods to keep the Ducks close.
Making his ninth start in a row with Jean-Sebastien Giguere out with a groin injury, Bryzgalov had struggled in the past week giving up 10 goals on 50 shots in his previous three starts.
Notes: Calgary LW Kristian Huselius had an assist to extend his points streak to six games (five goals, four assists) . . . The Ducks picked up their NHL-leading 44th fighting major when George Parros fought Calgary's Eric Godard in the first period. Calgary is 4-0 this year in the games Godard has appeared in. . . . With 295 career goals as a Duck, RW Teemu Selanne is five goals away from tying Paul Kariya for the all-time franchise lead. . . . Calgary has outscored the opposition 86-55 at five-on-five. . . . Anaheim has eight days off before returning to action Jan. 28 at home against Dallas.