Yadier Molina drove in two runs to help St. Louis send the Brewers to their ninth straight loss with a 3-2 win in the opener of a four-game set on Thursday.
The Cardinals, who used a patchwork effort from their bullpen to secure the win, have won six straight and now lead Milwaukee by four games in the NL Central.
Marco Gonzales (2-2) allowed one run in 2 1/3 innings of relief of Michael Wacha, who returned to the mound for the first time since June 17 because of a shoulder issue.
Wacha surrendered one run on three hits and a walk while striking out three in his 50-pitch, three-inning outing.
Wily Peralta (15-10) was tagged with the loss after he gave up three runs on seven hits and struck out seven over six innings of work. Peralta has now lost three straight and four of his last five starts for the reeling Brewers.