Kostitsyn's first goal gave Nashville a 2-1 lead. His second made it 4-1 and he capped the scoring with 30 seconds left.
Kostitsyn completed the hat trick as he scooped up a shot by Klein and popped the puck into an empty net.
"I didn't know if the puck was going to go in or outside of the net," Nashville's Patric Hornqvist said of Kostitsyn's empty-net goal. "He really got on his horse and sealed the game for us. It was a big goal and big for him to get his first hat trick."
Klein, back after missing the last six games with complications from the flu, scored the first goal for the Predators with a slap shot at the 12:39 mark of the first period.
"I felt pretty good," Klein said. "I've had a couple of weeks to get my legs back. Still, in the third period I felt a little sluggish."
If Klein had scored the empty-net goal it would have been the first two-goal game of his career. He had no problems with Kostitsyn out-skating everyone else to put the finishing touch on the play.
"I'm glad for his hat trick," Klein said. "Those don't come too often. I don't really get paid to score, so it's not a big deal."
Iginla, stationed in front of the crease, beat goaltender Pekka Rinne with a wrist shot 3:47 into the game.
The Predators took the lead at 2-1 when Kostitsyn skated in from the right side and beat Kiprusoff to his glove side with a wrist shot from close range with 4:54 remaining in the first.
Halischuk added to the lead 2:27 into the second period with a snap shot from low in the slot.
Kostitsyn struck for the second time with a wrist shot on a 2-on-1 from the right side that went between Kiprusoff's legs at 5:59 of the second.
Calgary cut the lead to 4-2 when Bourque skated in from the left side and beat Rinne from close range 1:17 into the third period.
Morrison scored on a rebound from close range with 2:03 left to play.
Rinne turned back 17 shots.
Trotz did not expect both teams to combine for eight goals. In the previous games this season with Calgary the Predators had won 2-1 and 2-0 and lost 1-0.
"I was expecting it to be 2-2 and a shootout or overtime," Trotz said. "We talked about making sure we were really focused on the game.
"We took over in the second period. Halfway through the first period and the entire second period we were excellent. We didn't give them anything. We stayed on the puck and we had lots of chances."
Kiprusoff stopped 22 of 26 shots.
Calgary coach Brent Sutter thought three goals should have been enough for the win.
"You're up a goal, win a draw in the neutral zone and we have the puck. Instead of taking it up ice we turn back and take it into our zone and turn it over for the first goal," Sutter said. "On the second goal we lost coverage out in front of our net. The third goal was obviously a turnover in the neutral zone that turned into a 2-on-1. The fourth goal was another loss of coverage in our zone."We scored three here and we still lost the game," Sutter said. "It tells you that defensively we're not where we need to be. There are too many mistakes and it is costing us."
Nashville's Shea Weber has missed four games with a concussion. The Predators are 3-1 without their captain in the lineup. ... Calgary's Olli Jokinen played in his 1,000th career NHL game. ... Nashville's Jordin Tootoo was credited with two assists, giving him 15 points (six goals, nine assists) in his last 18 games. ... Iginla, who has eight goals and 11 assists in his last 16 games, is one goal short of 500 for his career. ... Hornqvist had two assists.
Copyright by STATS LLC and The Associated Press
NASHVILLE, TN - JANUARY 1: Olli Jokinen #13 of the Calgary Flames stretches during warmups against the Nashville...