The Flames (33-25-7) had won their previous two games. Mikael Backlund had three points (one goal, two assists).
"It's a game of inches, right?" Calgary coach Geoff Ward said. "You've got to play it right to the last whistle and every play's important. It was unfortunate, but we'll take the point for sure. We'll be happy with probably like 98 percent of the hockey game. I thought we played a real, real solid hockey game tonight outside of a couple of plays."
Andrew Mangiapane gave the Flames a 3-2 lead with 43 seconds remaining in the third period after Backlund dangled through the Predators defense.
"[Backlund] was awesome," Ward said. "Absolutely awesome. He's been playing really well. That line has been good. We're relying a lot on them, they're doing an awful lot of good things for us."
Josi scored for the Predators to tie the game 2-2 at 14:30 of the third period on a wrist shot from the left circle.
Colton Sissons gave the Predators a 1-0 lead on a shot from the slot with 31.2 seconds remaining in the first period.
"I think we've been trending in the right direction for sure," Sissons said. "I think this game will definitely give us some confidence and give us a little bit of juice of energy. We'll take that and run."
Rasmus Andersson scored for the Flames to tie the game 1-1 26 seconds into the second period on a pass from Backlund.
Backlund gave the Flames a 2-1 lead at 3:48 of the second period. He shot the puck toward the net, and it bounced off of Predators defenseman Mattias Ekholm past goalie Juuse Saros.
Flames defenseman Mark Giordano returned to the lineup after missing 10 games because of a hamstring injury.
"It's my first one back so there's obviously some things, some rust and you need to be better," said Giordano, who played 21:34. "As the game wore on, I felt more and more comfortable with the puck and making plays."