Brayden Schenn put the Blues ahead 4-3 with 3:55 remaining, scoring on the rebound after Vince Dunn's wrist shot from the left point was redirected by Alexander Steen in front.
"I've got to do more of that, I've got to go to the net more, that's where the puck's always ending up," Schenn said. "Whether it's a tip or a rebound or a bounce like that, you go to the net, good things are going to happen, and I have to do a better job of getting there."
WATCH: [All Panthers vs. Blues highlights]
David Perron scored two goals, and Jake Allen made 22 saves for St. Louis (11-14-4), which won for the first time this season when trailing entering the third period (1-12-2).
"It's a very good win, for sure," coach Craig Berube said of the Blues' second victory in five games. "I thought our game was solid all the way through. We did a good job."
Evgenii Dadonov, MacKenzie Weegar and Mike Hoffman scored, and Roberto Luongo made 29 saves for the Panthers (11-12-6), who have lost three games in a row and four of five.
After Dadonov hit the post 55 seconds into the third period, St. Louis scored twice in 11 seconds to take its first lead. Ivan Barbashev tied it 1-1 at 1:28, and Perron scored at 1:39 to make it 2-1.
"We didn't capitalize on some of the chances we had in the second period when we really had the push going," Florida coach Bob Boughner said. "Therefore, the game stays at 1-0, and we hit the post and they came down, they score, 1-1, there's still lots of game left, and then the very next shift again. So it's that momentum thing where two shifts changed the game. We found a way to come back and you know they got one."