Darcy Kuemper made 39 saves and had an assist, and Richard Panik, Vinnie Hinostroza and Oliver Ekman-Larsson scored for the Coyotes (35-30-5), who have won nine of their past 11 games and are one point ahead of the Minnesota Wild.
"Especially with the year we've had so far with a lot of injuries, we've battled really hard to get to where we are right now and hopefully we can keep going and stay in that wild card spot," Ekman-Larsson said. "That's what we're focused on right now. We don't look at the other teams. We need to focus on what we have to do."
WATCH: [All Coyotes vs. Blues highlights]
Arizona was playing the second of a back-to-back after losing 7-1 to the Chicago Blackhawks on Monday.
"This morning we had our meeting and I could tell guys were serious," Coyotes coach Rick Tocchet said. "We all didn't like the game (Monday), but the one thing this team does is it bounces back. We had a bend but don't break defense today. St. Louis was coming at us pretty hard, but I thought we did a pretty nice job of getting in lanes and playing half decent positional hockey."
Jaden Schwartz scored, and Jordan Binnington made 19 saves for the Blues (36-26-7), who have lost four of their past six games (2-3-1) and lead the Dallas Stars by two points for third place in the Central Division.
St. Louis outshot Arizona 40-22 and led them in attempts 76-34.
"It's embarrassing. It (stinks)," Blues center Ryan O'Reilly said. "It's a game we should have won. There's no way those guys should have beat us. I was shooting the puck terrible tonight (five shots on goal, 10 attempts). I had lots of opportunities where I could have done something. That was embarrassing. That was a game we should have beat those guys."