Brendan Morrison, Jarome Iginla, Olli Jokinen and Alex Tanguay each had a goal and an assist for the Flames, who had lost six of eight coming into the game.
Henrik Karlsson stopped 17-of-21 shots as Calgary snapped a three-game losing streak at home.
“We don’t want to be giving up four goals against,” said Calgary head coach Brent Sutter. “Fortunately tonight we scored enough to win the game.”
Brad Richards had a goal and an assist, while Nicklas Grossman, Brenden Morrow and James Neal each lit the lamp for the Stars, who had a five-game winning streak stopped.
Andrew Raycroft was tagged for all seven goals on just 19 shots as Dallas saw an eight-game road winning streak stopped.
“We didn’t get a very good performance from out goaltender tonight,” said Dallas head coach Marc Crawford. “Then we made a big mistake in the third period after we got it close. In a game like this, you have to keep the opponents’ chances to a minimum. We battled back, but it wasn’t enough.”
Calgary scored 3:40 into the contest when Morrison grabbed his own rebound and centered it for Tanguay, who tipped it into the net, but Dallas answered five minutes later as Morrow’s quick shot from the left circle caught Karlsson looking the other way.
Dallas took its only lead of the game with 7:48 to play in the first when Richards charged down the right wing with a player skating toward the net and snapped a shot over the left shoulder of Karlsson.
However, Calgary tied the game three minutes later as Jokinen lit the lamp for the first time in 11 games when he finished a 2-on-1 with a shot from the right circle.
The Flames scored three times in the second period to take command of the contest.
The first came at the 11:51 mark of the frame as Tim Jackman sent a pass from outside the right circle to the inside of the circle where Mikael Backlund tipped it into the net.
With 2:50 to play in the middle frame, Moss notched the 100th point of his career when he snuck a loose puck from the right circle between the pads of Raycroft. Less than a minute later, Morrison made it a 5-2 contest with his wrister from the right circle on a 2-on-1 break.
Grossman scored for the first time in 130 games with 48 seconds left in the second as his wrist shot from the high slot went through a screen.
Dallas made it a 5-4 game just 31 seconds into the third when a turnover in the Calgary end saw Jamie Langenbrunner bang a shot off the crossbar and Neal finish the play as he fell to the ice.
However, Calgary got the two-goal edge back less than four minutes later when Iginla took a pass from behind the net at the left side and switched to the backhand before sliding the puck in.
Moss’ power-play goal with 7:48 to play iced the victory for the Flames.
Grossman’s last goal came on March 14, 2009 against Minnesota…Calgary has won both meetings with Dallas this season…Calgary plays at Vancouver on Saturday…Dallas plays in Vancouver on Monday…Iginla’s goal was his 20th of the season. He has reached that mark in all but one of his 14 seasons in the NHL.