"There's a couple guys in their lineup that hit me real well, and it's a tough lineup," Garcia said. "They swing the bat. They take good at-bats every time they go up to the plate, so it's a challenge for me."
Cardinals manager Mike Matheny said Garcia was in control from his first pitch.
"Every time he walks out there he has a chance to throw a no-hitter," Matheny said. "It's amazing what he can make the ball do when he is in a good rhythm. This is what we expect to see. When he's healthy, he's special."
Garcia struck out 13, three more than his previous career high, and caught eight of them looking at third strikes. The 13 strikeouts were the most by a Cardinals left-hander since Steve Carlton fanned 16 Phillies on May 21, 1970.
"I was just trying to focus on one pitch at a time and just try to do the job to keep us in the ballgame," Garcia said.
The movement on Garcia's pitches gave the Brewers fits.
"The changeup was acting as a split finger almost," Brewers manager Craig Counsell said. "He had plus, plus, plus late movement."
Garcia's previous shutout had been against Milwaukee on May 6, 2011. He is 4-1 with a 1.44 ERA in his last five starts against the Brewers.
"It's been a while since I've been able to go nine innings," Garcia said. "It's definitely a lot of fun, but it's a long season, just got to try to do that again."
Randal Grichuk and Jeremy Hazelbaker hit two-run homers. Grichuk's drive in the third off Wily Peralta (0-3), which boosted the lead to 5-0, barely eluded the glove of center field Keon Broxton. Grichuk actually passed teammate Brandon Moss rounding first while looking to see if Broxton made the catch, but the Brewers didn't challenge and first base umpire John Hirschbeck missed it, as well.
"You're taught on deep fly balls like that to play it like (Moss) did," Grichuk said. "He actually didn't see it go over. We kind of got confused there rounding first, and going back to first."
Broxton didn't know about the missed baserunning blunder until after the game.
"Got a good read on it, tracked it well, found the wall, jumped up caught it with my palm and once I hit the wall it just bobbled out," Broxton said.
Hazelbaker hit his team-high third home run of the season in the seventh, against Chris Capuano.
Peralta gave up five runs and seven hits in five innings, throwing just 55 of his 96 pitches for strikes.
Matt Carpenter had a two run double in the three-run second and is hitting .471 in 34 plate appearances against Peralta.
Scooter Gennett went 0 for 4. It marked the first time in 18 career games at Busch Stadium he failed to reach safely.
Brewers: SS Jonathan Villar was out of the lineup for a second straight game after injuring his left ankle sliding during Monday's game. "Trying to get him back to as close to 100 percent as we can," Brewers manager Craig Counsell said. "It's just day to day with it."
Cardinals: SS Ruben Tejada (strained quadriceps) began a rehab assignment at Double-A Springfield on Thursday.
Brewers: RHP Jimmy Nelson is to make his third start as Milwaukee opens a three-game series in Pittsburgh on Friday. Nelson is 4-2 with a 2.48 ERA in six starts against the Pirates.
Cardinals: RHP Carlos Martinez is to make his 2016 home debut on Friday against Cincinnati. Martinez is 3-1 with a 2.48 ERA in 14 appearances versus the Reds.
- Home Plate Umpire - Bill Miller
- First Base Umpire - John Hirschbeck
- Second Base Umpire - Bill Welke
- Third Base Umpire - Vic Carapazza