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.
Yosemite climber falls 30 feet, suffers major injuries
'How to Train Your Dragon 2' releases 5-minute clip