Paul DeJong hit a go-ahead, two-run homer in the seventh inning as the Cardinals edged the Reds 3-1 at Busch Stadium.
Dakota Hudson allowed just one run over six-and-a-third innings, with John Gant earning his fifth win of the season.
Matt Carpenter plated the other run for St. Louis, which has won five-of-six.
The Cards visit the rival Cubs today with Miles Mikolas opposing Cole Hamels.
Alex Gordon, Jorge Soler and Cheslor Cuthbert went yard, but it was not enough as the Royals lost to the Red Sox 7-5 in Kansas City.
Danny Duffy allowed four runs over two-and-a-third innings for Kansas City, which has lost six straight and 12 of its last 14.
The Royals banged out 14 hits, but struck out 11 times, stranded 10 runners and went 2-for-12 with runners in scoring position.