"Everything's been working good the whole year, it's just making little adjustments and stuff," Garcia said. "The last start was a bad day.
"The whole game I felt real good."
Garcia (8-4) retired his last 13 hitters and had seven strikeouts, five days after giving up five runs in two innings with no strikeouts in a loss at Kansas City. The lefty got his biggest out when Prince Fielder tapped out to first with the bases loaded to end the first.
Both of Garcia's walks came in the third, including opposing pitcher Chris Narveson, but Fielder went after the first pitch.
"Well, if that's your pitch I've got no problem swinging at the first pitch," manager Ken Macha said. "If that's your pitch, hit a line drive."
Garcia beat the Brewers for the second time, matched his career best for innings and strikeouts, and lowered his ERA to 2.10. The ERA is even better at home, a minuscule 1.20 to go with a 3-1 record in seven starts. He has allowed no runs five times in 16 starts.
"He's been good so many times," manager Tony La Russa said. "I don't care when you face this club, even if you're coming off a great game you've got your hands full.
"He made a lot of good pitches and you just can't give him enough credit."
Garcia's only miscue came on the basepaths. He went in standing up on what had appeared to be a clear-cut double off Chris Narveson leading off the fifth and was thrown out by right fielder Corey Hart just before callup Tyler Greene homered to left with a drive estimated at 407 feet.
La Russa said the Brewers did a good job of deking Garcia, and noted the pitcher also made a wide turn at first.
"That kind of discombobulated him," La Russa said. "I told him, there's been a lot of everyday players over the years with experience that have fallen for that one, so don't be kicking yourself. Just keep pitching."
Hart was 2 for 3 with a walk and extended his hitting streak to 17 games for Milwaukee, which had won eight of its previous 11.
Narveson (7-5) came up with the Cardinals and has struggled early in two starts this year against St. Louis. The Cardinals scored four runs on three extra-base hits against the lefty on June 5 and opened with two runs on four hits in the first on Friday, the first on Albert Pujols' double-play ball and the second on Nick Stavinoha's RBI single.
Felipe Lopez doubled to open the third for the second of his third hits and scored with one out on Pujols' sacrifice fly, Greene's second homer made it 4-0 in the fifth and Holliday's double off Trevor Hoffman in the eighth made it 5-0.
Fielder didn't get a ball out of the infield in three at-bats against Garcia, but he wasn't alone. There were no outfield putouts while Garcia was on the mound.
"I wouldn't say he was dominant against our offense, I would say he's dominant against all offenses," Narveson said. "I think it's fair to say he's been lights out all year."Notes
- FoxSports Midwest telecast the game to troops in Afghanistan.
- Willie Randolph is filling in for Brewers 3B coach Brad Fischer, who's missing the weekend for his daughter's wedding. Head trainer Roger Caplinger is attending to his ailing father.
- C George Kottaras will play Saturday, partly because Jonathan Lucroy has more trouble handling LHP Manny Parra's splitters in the dirt.
- Lou Brock threw out the first pitch on "Brockabrella night."
- C Yadier Molina was assessed an error after whiffing on a foul pop in the seventh, but official scorer Mike Smith reconsidered after replays showed Molina stumbling over a bat in the Brewers' on-deck circle just before the ball arrived.
- Hart is batting .366 (26 for 71) during his hitting streak.