Ryan Johansen, Craig Smith, Kevin Fiala and Filip Forsberg, into an empty net, also scored for Nashville (6-1-0), which has won four straight. The Predators wrap up their two-game road trip on Saturday night in Edmonton.
Elias Lindholm, with his team-leading fifth goal, Matthew Tkachuk and Sam Bennett scored for Calgary (4-3-0). The Flames depart for a two-game road trip that begins in New York on Sunday night against the Rangers.
After Noah Hanifin got caught pinching, Rinaldo broke out on a two-on-one with Ryan Hartman and hung onto the puck the whole way before beating Mike Smith on his blocker side with a perfect wrist shot into the top corner at 6:31 of the third.
In the back-and-forth game, Nashville took the lead four times with Calgary answering back to tie it the first three times.
Down 3-2 entering the third, the Flames pulled even at 2:20 when Derek Ryan wired a perfect feed to Sam Bennett, who was breaking in off the wing and went to his backhand to neatly beat Pekka Rinne.
While stretching to try and make the save, Fiala landed on top of Rinne in an awkward-looking collision.
Rinne stayed in the game briefly, but came to the bench at 5:09 and after talking with the training staff went to the dressing room. He was replaced by Juuse Saros.
Saros was excellent in relief, getting tested just seconds after he arrived in the crease. Off the ensuing face-off, he had to jab out his right pad to rob Lindholm to keep the game tied.
Saros was perfect on nine shots to earn the win and improve to 3-0-0. Rinne had 15 saves when he exited the game.
Smith turned aside 25 shots in taking the loss. He falls to 3-3-0.
Fiala gave Nashville a 3-2 lead at 14:23 of the second as the Predators converted their first power-play opportunity of the night, courtesy of a double-minor for high-sticking on former Predator James Neal.
Calgary tied it less than two minutes earlier, connecting on its first power play at 12:51 with Lindholm’s shot caroming in off Tkachuk’s skate.
Nashville struck first, scoring fifty-one seconds into the game. TJ Brodie lost his stick along the sideboards and in going to retrieve it, allowed a two-on-one in front that was converted by Johansen.
Calgary went over 16-and-a-half minutes between shots in the first, with Lindholm snapping the streak, burying a Johnny Gaudreau set-up past Rinne at 18:43 to make it 1-1 after 20 minutes.
Notes: The Flames lose for the first time on home ice after winning their first games… Dillon Dube (lower body) returned after missing one game. That bumped Austin Czarnik to the press box for the first time as a healthy scratch… Sean Monahan played in his 400th NHL game.