"He was pressing a little bit," Tampa Bay coach John Tortorella said. "Give him credit. He puts a lot of pressure on himself. I think he fought through it. Two huge goals in the third period."
Eric Perrin stole an errant pass before setting up St. Louis' 40th goal from the low right circle that gave the Lightning a 2-1 advantage at 9:42.
"We gave them a gift and they capitalized on it," Devils goalie Martin Brodeur said.
St. Louis admitted his drought was frustrating.
"Of course there was frustration," St. Louis said. "I think it plays on your mind a bit. You've just got to not get away from your game. I think I did a little bit. I'm lucky to play with great teammates."
St. Louis made it 3-1 with 6:16 left, netting his 41st goal of the season. Vincent Lecavalier assisted for his 500th NHL point.
"He worked hard for it," Lecavalier said.
Lecavalier has 49 goals this season. He had a great scoring chance in the first, but Devils defenseman Colin White stopped the Lightning center's shot with his stick after it got past Brodeur.
Jason Ward also scored for Tampa Bay, which moved within two points of Southeast Division-leading Atlanta.
Brodeur stopped 29 shots. Zach Parise had the lone goal for the Devils, who have lost four of five.
"It's no fun losing," White said. "We made a couple of errors and they capitalized on them."
New Jersey maintained its two-point lead over Pittsburgh for first place in the Atlantic Division.
Ward put the Lightning ahead 1-0 at 11:23 of the first. Parise tied it with a power-play goal with 8:39 left in the second.
Denis made a diving stop in the second on an in-close shot by Jamie Langenbrunner.
"Pretty good night for Marc," Tortorella said.
Brodeur stopped 14 of 15 shots in the first.
- Tampa Bay G Johan Holmqvist missed the game due to the flu.
- New Jersey centers John Madden and Patrik Elias both remained sidelined by groin injuries. C Erik Rasmussen is out with an upper body injury.