Ryan O'Reilly had a goal and two assists, Brayden Schenn had two assists, and Jordan Binnington stopped 20 of 21 shots playing the first two periods for St. Louis, which scored three power-play goals. Vadim Zherenko made 11 saves.
The Blues have won their first three preseason games.
Cole Guttman scored, and Petr Mrazek made nine saves on 10 shots for Chicago in its preseason opener before being replaced midway through the second period by Alex Stalock (nine saves). Each goalie was making his Blackhawks debut; Mrazek was acquired in a trade with the Toronto Maple Leafs on July 7, and Stalock agreed to a one-year, $750,000 contract July 14.
O'Reilly put the Blues ahead 1-0 on the power play at 2:23 of the first period, one-timing a Schenn pass in the slot.
Guttman, playing his first NHL game, tied it 1-1 with 1:08 left in the second period on a one-timer in front.
Justin Faulk gave St. Louis a 2-1 lead at 8:57 of the third period with a power-play goal, and Griffin Luce extended it to 3-1 at 11:59.
Nikita Alexandrov's power-play goal at 16:55 made it a 4-1 final.
Blues defenseman Scott Perunovich left the game late in the first with an upper-body injury after being hit along the boards by Blackhawks forward Michal Teply.