Wacha (7-0) struck out four and allowed one unearned run, five hits and two walks in seven innings, beating Kansas City for the first time in three tries.
The NL Central-leading Cardinals have won each of the right-hander’s last 11 regular-season starts, including all seven this season.
“It’s those guys that are putting up runs and playing great defense behind me,” said Wacha. “It’s not just all me.”
Matt Carpenter hit a two-run homer for St. Louis, which snapped a three-game skid to finish 3-4 on their road trip.
The AL Central-leading Royals, who won Saturday’s rain-shortened game in six innings, had a five-game winning streak snapped.
Yordano Ventura (3-4) took the loss, giving up four runs on five hits and two walks in seven innings.
Ventura, who struck out seven, walked the first two batters of the game on 10 pitches and then gave up back-to-back RBI hits as the Cardinals took a 2-0 lead with no outs. The runs scored on Jhonny Peralta’s check-swing single up the middle and Matt Adams’ double to the center-field wall.
“He just missed with some pitches that could have gone either way and resulted in walks,” Royals manager Ned Yost said of Ventura. “He kind of got it dialed back in a little bit … and did a great job of limiting the damage.”
The starters worked quickly through the rest of the first 4 1/2 innings before the Royals finally crossed the plate on a Salvador Perez single in the fifth inning, which scored Alex Gordon after he reach on an error.
But the Cardinals pushed their lead to 4-1 on Carpenter’s homer inside the right-field pole after Kolten Wong led off the sixth with a single.
Yadier Molina added a two-run hit off Luke Hochevar in the eighth to make it 6-1.