Mackenzie MacEachern, Nikita Alexandrov and Jake Neighbours also scored, and Jordan Kyrou and Pavel Buchnevich each had two assists for St. Louis (4-2-2). Jordan Binnington made 11 saves before being replaced at the start of the third period by Joel Hofer, who stopped both shots he faced.
Joey Anderson, Lukas Reichel and MacKenzie Entwistle scored for Chicago (2-2-2). Petr Mrazek made 18 saves.
Each team was playing its final game of the preseason.
Alexandrov gave the Blues a 1-0 lead with a power-play goal at 3:52 of the first period.
Thomas made it 2-0 at 5:27.
Reichel cut it to 2-1 at 14:01, but MacEachern responded for the Blues to make it 3-1 at 7:21 of the second period.
Thomas scored a power-play goal at 9:38 to extend the lead to 4-1. It was his fifth goal this preseason.
Anderson made it 4-2 at 10:22, and Entwistle cut it to 4-3 at 12:28.
Neighbours scored 1:05 into the third period for the 5-3 final.