Ryan Ellis and Craig Smith scored in the first 2:40 of the final period and Nashville snapped a three-game losing streak while handing struggling Calgary its eighth loss in their last 10 games.
Viktor Stalberg added an insurance goal at 10:52 of the third period and David Legwand notched three assists. Shea Webber scored on a power play late in the first period and Carter Hutton made 22 saves.
Lee Stempniak also scored in the first for Calgary to tie the score 1-1. Mikael Backlund scored at 13:07 of the final period to round out the scoring.
The Flames had a goal by Mark Giordano waved off in the third period when the officials ruled his stick was above the crossbar when he scored.