ST. LOUIS -- Everything was working for Yovani Gallardo. Even his fashion sense.
The right-hander was the second pitcher to flirt with a no-hitter at Busch Stadium in as many days. He allowed only a single to start the eighth inning in a performance that busted two slumps in the Milwaukee Brewers' 4-0 victory over the St. Louis Cardinals on Saturday.
"His stuff was just nasty," catcher Jonathan Lucroy said. "It's who he is, it's what he does."
Gallardo displayed stirrups for the first time, stealing a shorter pair of pants out of teammate Marco Estrada's locker, and said "Marco's not getting his pants back."
Gallardo (3-2) left after eight innings, the lone blemish Daniel Descalso's solid single up the middle on a 1-1 count. The Brewers' opening day starter entered the game with 53 hits allowed, tops in the major leagues, and ended a string of five poor outings in which he was 1-2 with an 8.89 ERA.
"That's pretty dramatic. That's Yo," manager Ron Roenicke said. "The other starts, I think that wasn't Yo. I think he just got back on-line again."
Gallardo said he succeeded by moving the fastball around, getting groundball outs to end innings, commanding a slider especially against left-handed hitters and keeping the ball down. Just like Jaime Garcia, who carried a perfect game into the eighth Friday and ended with a one-hitter, Gallardo was aware of the circumstances.
"A pitcher tells you they're not thinking about it, it's not true. I was definitely thinking about it," Gallardo said. "Of course, it would have been great to have achieved that."
It was almost as great just to get a win.
John Axford worked a perfect ninth for the Brewers, who were outscored 37-7 and shut out three times during a seven-game losing streak. Roenicke canceled batting practice Saturday in hopes of shaking up the offense.
"This week," Gallardo said, "was tough for all of us."
St. Louis' Kyle Lohse (4-2) couldn't quite match Gallardo, allowing a run and six hits in eight innings in a return to form. The right-hander had a 22-inning scoreless streak ended in his last appearance, and didn't allow a runner in scoring position his last four innings.
Light-hitting Carlos Gomez gave the Brewers breathing room in the ninth with a two-run triple off Jason Motte that sailed over the head of right fielder Lance Berkman, then scored on pinch-hitter Yuniesky Betancourt's sacrifice fly. Gomez, Milwaukee's eighth-place hitter, also doubled after entering in a 3-for-23 slump.
Motte had replaced Mitchell Boggs, who was yanked after throwing a wild pitch that made it a 1-1 count against Gomez, and Gomez's hit came on a 2-2 count.
"[Boggs] had a short leash today," manager Tony La Russa said. "He's a sinkerball pitcher and he's getting the ball up. Just looked like he was really hyped."
Gallardo retired the first 13 batters in order before walking Berkman on a full count with one out in the fifth, and threw three more full-count walks before giving up Descalso's hit. He had been 0-4 with a 5.63 ERA in seven career starts against St. Louis.
"I was trying to get on base anyway I could," Descalso said. "The pressure was on that guy."
Lohse needed an extra out to escape a bases-loaded jam in the second after shortstop Tyler Greene inexplicably went for a forceout at second instead of going to first on Gallardo's two-out grounder, and Gomez hustled into second. Rickie Weeks struck out to end that threat.
Greene bunted foul three times in the eighth, the first on a 3-0 count.
"It was just some good pitches, that slider-cutter that he throws. I've just got to get it down and I didn't," Greene said.
Prince Fielder scored from first on Casey McGehee's two-out double in the third. The Brewers had two hits in the eighth but neither made it past first after Weeks got a leadoff single and then was easily caught stealing on a pitchout.
Gallardo was helped early by two exceptional defensive plays. Gomez made a leaping catch at the center field wall to prevent extra bases for Colby Rasmus in the first, and right fielder Mark Kotsay saved two runs with a running catch near the line and warning track that robbed Greene of extra bases to end the fifth.
The Brewers' last one-hitter was by CC Sabathia on Aug. 31, 2008, at Pittsburgh. The franchise has only one no-hitter, by Juan Nieves in 1987, at Baltimore. ... The Cardinals were shut out for the first time, leaving only Arizona which hasn't been blanked. ... Cardinals regular SS Ryan Theriot did not play a day after leaving in the fourth with a bruised left shin where he was hit by a pitch. Theriot had been optimistic Friday night but La Russa said he'd rather not push it. ... Garcia has an 0.39 ERA at home after throwing a two-hit shutout Friday.