Vincent Lecavalier and Andreas Karlsson also scored for Tampa Bay, which has an 11-game winning streak against Pittsburgh. Five of the victories have come at home, where Tampa Bay has outscored the Penguins 22-3.
St. Louis has four goals and 11 points during a personal eight-game point streak.
Sidney Crosby and Colby Armstrong scored for the Penguins, who have lost four of their last seven. It was announced late in the third period that the 19-year-old Crosby will be in the starting lineup for the Eastern Conference in this month's all-star game.
St. Louis gave Tampa Bay a 2-1 lead on his 27th goal of the season during a power play at 6:46 of the second. His shot from along the goal-line deflected off Pittsburgh goalie Marc-Andre Fleury.
Tampa Bay's Johan Holmqvist made a diving save on Mark Recchi's back-hander with 17:04 left in the third. Karlsson extended the Lightning lead to 3-1 19 seconds later with his first goal in 19 games. St. Louis set up the goal by stealing the puck from Pittsburgh defenceman Sergei Gonchar.
Armstrong got Pittsburgh within 3-2 with 2:41 to play.
Crosby put the Penguins up 1-0 just 24 seconds in. He took the puck away from Tampa Bay defenceman Dan Boyle near the blue line and scored with one knee on the ice while being hooked from behind in the low slot.
Lecavalier tied it at 1 at 6:11. He has 20 goals in 31 career games against Pittsburgh.
Notes: Crosby has four goals and 10 points in his five-game points streak. ... The Lightning have won seven of their last 11. ... Lightning captain Tim Taylor sat out with a lower-body injury.