David Rittich finished with 26 saves for Calgary, which has lost six in a row while being outscored 23-5.
Binnington, who helped the Blues to their first Stanley Cup title last season, got his first shutout this season. His biggest save came late in the second when he halted Johnny Gaudreau on a breakaway.
Sanford converted on a one-timer off a pass from Thomas with just under eight minutes left in the first to get the Blues on the scoreboard. He finished with his first career four-point game.
Sundqvist converted on a breakaway midway through the second period for a 2-0 lead. He added his sixth of the season early in the final period. It was his first two-goal game since scoring twice in a 5-3 win over Vegas on Nov. 1, 2018.
Perron made it 3-0 near the midpoint of the second with his 10th and Dunn capped the scoring near midway through the third.
.@Panger40 to Jordan Binnington: “Boy, you looked good in those pads and the gloves and the equipment.”
Binner: “I wish I could say the same about that jacket, but I appreciate it.” #stlblues pic.twitter.com/XmkQUqYKpI
— FOX Sports Midwest (@FSMidwest) November 22, 2019
NOTES: Binnington improved to 11-3-4 and has allowed two goals or fewer in nine of his last 12 starts. … Calgary has surrendered the first goal in its last eight games, and 17 of 25 overall this season. … The Blues were decked out in retro sweaters that were worn from 1994-98. It was the first of three appearances with the alternate jerseys this season. … St. Louis RW Troy Brouwer, who was signed on Wednesday, did not play due to work visa issues.
Flames: At Philadelphia on Saturday for the second game of a four-game trip.
Blues: Host Nashville on Saturday.