Josh Norris, Chris Tierney and Nikita Zaitsev scored in the third period for the Senators (12-20-3), who are 3-0-2 in their past five games, all at home.
Mark Giordano scored, and Jacob Markstrom made 28 saves for the Flames (15-16-3), who have lost three straight and are 1-4-0 in their past five. They are 4-4-0 under coach Darryl Sutter, who replaced Geoff Ward on March 4 but made his debut March 11.
"It's tough right now," said Giordano, the Calgary captain. "Both games feel similar, where we didn't have the ability to lock it down when we needed to in the final minutes. It's tough. It's really tough. This was a big trip for us and a couple tough losses. The bottom line is myself and the other leaders, we've got to make plays under pressure. That's the difference."
Giordano's point shot deflected off Senators forward Alex Formenton's glove and beat a screened Gustavsson to give the Flames a 1-0 lead at 13:37 of the second period.
"We had the game in our favor in the third and it got away from us," Calgary forward Dillon Dube said. "It's tough. It's not what you want, that's for sure."