Brayden Schenn had a goal and an assist, and Vladimir Sobotka and Vladimir Tarasenko scored for the Blues (29-18-3), who won for the third time in the past four games. They became the eighth team in NHL history to win 1,800 games.
"If you play a bad game it doesn't mean that they don't care," St. Louis coach Mike Yeo said. "I know how much this group cares. Unfortunately, the previous game we fell into what you would call a trap game, but I think we got the response in the two days in between from the players, the work ethic that they showed in practice.
"I was confident we'd get a good response from them. There's a lot of character and a lot of leadership in that group, and they showed that tonight."
Craig Anderson made 38 saves for the Senators (15-22-9), who have lost four in a row and five of their past six.
"I don't think it's frustration," Ottawa coach Guy Boucher said. "It's clear, they were better."