Jake Allen made 20 saves for the Blues (30-10-7), who have won four games in a row and matched their longest home winning streak, set from Jan. 26-Feb. 26, 1991.
St. Louis has the most home wins in the NHL (17-4-3).
"We've been going pretty good," said Jaden Schwartz, whose second-period goal put the Blues ahead by two. "It's tough to keep track when you play on the road, so it's not something you really think about, but we're finding different ways to win, and each night, different lines, different guys are chipping in, whether it's offensively or defensively. Both goalies are kicking. Doing the little things right, playing well as a team."
WATCH: [All Ducks vs. Blues highlights]
John Gibson made 30 saves for the Ducks (17-24-5), who have lost four in a row and are 1-6-1 in their past eight games.
"To have confidence, to earn confidence, you have to play well and do things right on a regular basis, and it's hard to get that momentum and gather that confidence when you shoot yourself in the foot or a bounce doesn't go your way," Anaheim captain Ryan Getzlaf said. "... We're not getting timely goals right now, and it makes it even more of a struggle when you're trying to get things going."
The Blues scored twice on 22 shots in the second period.
Tyler Bozak put them ahead 2-1 at 2:21. After Robert Thomas stole the puck from Max Comtois in the Ducks zone, Bozak scored off a pass from Mackenzie MacEachern.
Schwartz scored seven seconds into a 4-on-3 power play to make it 3-1 at 9:41. After Ducks defenseman Josh Manson and Blues forward David Perron each was called for unsportsmanlike conduct at 7:49, Anaheim's Max Jones was called for hooking Ryan O'Reilly at 9:34.