MILWAUKEE -- With Jake Westbrook on the mound, the Cardinals haven't needed much offense this season.
The right-hander held opponents to three total earned runs through his first four starts this season, and he was stingy again Thursday, limiting the Milwaukee Brewers to a run on six hits over six innings in the Cardinals' 6-5 victory at Miller Park.
After getting no decision in his previous two outings, Westbrook (2-1) picked up the 100th victory of his career.
"It's good to get a team win and stay on a roll," said Westbrook, who is 100-96 in 13 major league seasons. "To get to 100 means a lot to me; it's always been a goal of mine."
With Westbrook dealing, the Cardinals' offense went to work against Wily Peralta. The Brewers rookie struggled with his command for much of his five-inning outing but managed to avoid trouble through the first two innings. Things took a turn in the third when St. Louis batted around, scoring six runs on seven singles -- an assortment of bloopers, broken bats and dribblers.
Westbrook and Matt Carpenter hit one-out singles, and Peralta plunked Matt Holliday to load the bases with two outs.
Allen Craig drove in the first two runs on a single to left, and Yadier Molina made it 3-0 with a base hit to right. Craig scored on David Freese's RBI single, and Jon Jay loaded the bases again with a hit to left.
That brought Pete Kozma up for a second time in the inning, and he drove in two with a single to left for a 6-0 lead.
"It looked like we were trying to build a bonfire out there with all those broken bats," said Cardinals manager Mike Matheny, whose team finished with 12 hits -- all of them singles. "But it was nice to get some runs early."
Peralta (2-2) recovered and worked through 4 1/3 innings, allowing 11 hits with a hit batter, two walks and three strikeouts. His two-game winning streak ended.
"I made good pitches," Peralta said. "A couple broken-bat (hits), and they found the hole on ground balls. That's going to happen in baseball. I just have to forget about it and get ready for my next one."
Milwaukee's bullpen kept St. Louis off the board, and once Westbrook left the game, the Brewers clawed back. The home team scored two runs in the seventh and one each in the eighth and ninth but left runners on base in all three innings.
With the potential tying run on first base, Edward Mujica struck out Jonathan Lucroy to escape with his seventh save.
"We left a lot of guys on," Brewers manager Ron Roenicke said. "We did a good job battling, though. We didn't get too many breaks. Braun hit two bullets, one to right and one to center, for outs, but I thought we swung the bat really well after Westbrook got out of there."
The victory was St. Louis' third in a row and moved the Cardinals a full game ahead of idle Pittsburgh for first place in the NL Central. The Brewers, who lost to the Pirates on Wednesday, have dropped five of their past eight since winning nine in a row.
NOTES: Milwaukee activated INF Jeff Bianchi from the disabled list before the game, filling a roster vacancy created when OF Khris Davis was optioned to Triple-A Nashville on Wednesday. Bianchi missed the season's first month due to a sore left hip flexor. Following the game, the Brewers optioned INF/OF Josh Prince to Nashville, clearing a roster spot for 3B Aramis Ramirez, who will return from the disabled list Friday. ... Freese was back in the Cardinals' starting lineup after getting the previous two games off. ... Milwaukee CF Carlos Gomez went 2-for-4 to extend his hitting streak to nine games. In his past 17 games, he's hitting .509 (29-for-57) with five home runs and nine RBIs. ... Jay went 2-for-4, snapping an 0-for-10 skid.