Dawson Mercer, P.K. Subban and Yegor Sharangovich scored for the Devils (22-34-5), who have lost three of four.
"Obviously not the result we wanted as a team," New Jersey goalie Jon Gillies said. "We talked about it this morning and I thought we did a lot of good things tonight. The unfortunate part of that is you can do a lot of good things, but when breakdowns happen they're usually going to put it in the back of the net and that's what happened."
Nico Daws allowed four goals on 19 shots before being replaced midway through the second period by Gillies, who made 19 saves. Daws was also pulled midway through a 6-3 loss at the Vancouver Canucks on Tuesday.
"I put Nico through a pretty tough test," Devils coach Lindy Ruff said. "Probably an unfair test for a young goaltender. Back-to-back, came out of the game. Physically playing back to back is tough. Mentally getting prepared for every game is tough. We've asked a lot of him, probably unfairly I've asked a lot of him."
Calgary scored three goals in 3:29 during the second period after the game was tied 2-2.
Dube put the Flames up 3-2 at 7:04 after Tkachuk fed him on the rush, and Tkachuk pushed the lead to 4-2 at 9:31 off a stretch pass by Erik Gudbranson.
"My linemates helped me out a lot tonight," Dube said. "I was in the middle skating, but it doesn't do much if your wingers aren't battling on the wall to get you the puck, so I think a lot of credit is on them too for being able to support me and find me in the middle."
Daws was pulled after the goal.