Jordan Kyrou and Ivan Barbashev each had a goal and an assist for the Blues (23-21-3), who had two straight. Jordan Binnington allowed four goals on seven shots before being pulled in the second period for Thomas Greiss, who made 10 saves.
Dickinson scored on Chicago's first shot at 10:27 of the first period to make it 1-0. Lafferty beat Blues forward Josh Leivo up the left wing before passing to Dickinson for a one-timer.
Lafferty then made it 2-0 at 13:20 when he beat Binnington five-hole on a breakaway for his third short-handed goal of the season.
St. Louis outshot Chicago 11-3 in the first period.
"It's obviously disappointing," Blues coach Craig Berube said. "I thought we started the game off excellent, really moving the puck well. Shooting, getting chances. Made two mistakes that shouldn't happen and they're both in the net and it's 2-0, so we're fighting uphill the rest of the game, and it wasn't good enough, obviously."
Reese Johnson made it 3-0 at 2:00 of the second period, scoring on a tap-in in the crease after beating Blues defenseman Calle Rosen to the front of the net.
Kyrou cut it to 3-1 with a power-play goal at 2:54, but Andreas Athanasiou pushed it to 4-1 at 3:59 on a wrist shot from the slot, ending Binnington's night.
"We gave up, not a lot of chances, but the ones we gave up went in our net," Berube said. 'Some of them we shouldn't have done. It's careless mistakes."