Vladimir Tarasenko and Alexander Steen also scored for the Blues, and Colton Parayko had two assists.
Derek MacKenzie, Aaron Ekblad and Jonathan Huberdeau scored for Florida, and Jaromir Jagr had two assists.
Brian Elliott made his 13th straight start in place of top goalie Jake Allen and had 29 saves for St. Louis.
Panthers goalie Roberto Luongo moved past Glenn Hall and into sixth in career NHL games played with his 907th appearance. He had 10 saves on 13 shots before being replaced after the first period by Al Montoya. Montoya stopped 13 of 15 shots.