ST. LOUIS -- Jaime Garcia had so much movement on his fastball, teammate Ryan Theriot said he could have beaten any team with just that pitch.

Garcia carried a perfect game into the eighth inning and finished with a two-hitter, dominating the punchless Milwaukee Brewers with his other pitches too, in a 6-0 victory for the St. Louis Cardinals on Friday night.

"This is definitely one of the greatest days of my short career," Garcia said. "It was real exciting out there."

Garcia (4-0) issued a four-pitch walk to Casey McGehee with one out in the eighth. On the next pitch, Yuniesky Betancourt grounded a solid single to left to end the no-hit bid.

"I noticed the sixth or seventh inning nobody was talking to me, but I knew the whole time," Garcia said. "I knew I had a perfect game and it so hard not to think about it."

Theriot, the Cardinals' shortstop, thought about it too. Theriot worried about having reduced mobility after getting hit by a pitch on his left shin in the first inning and left for a pinch-hitter in the fourth.

"In a game like that, you don't want to be down a step," Theriot said. "Jaime's throwing so great."

Garcia threw a four-hit shutout to beat the San Diego Padres in his first start but hadn't gone longer than six innings in any of his next five outings. Major League Baseball detained Garcia for several minutes after his third career shutout for an undisclosed reason.

Albert Pujols had a single, sacrifice fly and three RBIs for the Cardinals, who pounded a red-hot opposing pitcher for the second straight game. Randy Wolf (3-3) entered with an 0.65 ERA his previous four games but gave up six runs in five innings while hitting three batters.

"It was definitely a night where my command was the worst it's been all year, that's for sure," Wolf said. "There were times where I was missing all the way across the plate. When you do that, it's almost impossible to have a good outing."

On Thursday, the Marlins' Josh Johnson entered with an 0.88 ERA on the year before surrendering five runs.

The Brewers have been outscored 31-7 during a seven-game losing streak. They got one-hit by the Atlanta Braves' Tim Hudson on Wednesday and have been shut out three times during the slump.

"We're just not getting the job done," said Prince Fielder, who was 0-for-3 and is 2-for-22 in May with a homer and RBI. "Somewhere there's got to be a game where we break out of it, score a lot of runs and win."

The 24-year-old Garcia won 13 games last year and was third in the NL rookie of the year voting. The left-hander set the tone when he retired the side in order on only nine pitches in the first and needed only 77 pitches to get the first 22 outs before the perfect game and no-hitter went out the window on consecutive pitches.

"We all had our own thoughts," manager Tony La Russa said. "We were pulling so hard for him."

Rickie Weeks doubled over left fielder Matt Holliday's head with two outs in the ninth for the Brewers' only other hit against Garcia, who threw 102 pitches in a game that lasted 2 hours, 2 minutes -- the Cardinals' fastest game of the season by one minute over Garcia's shutout of the Padres.

Holliday extended his hitting streak to 12 games with an RBI double in the first, Colby Rasmus had an RBI triple and scored on Pujols' sacrifice fly to make it 3-0 in the third and Yadier Molina led off a three-run fourth with his second homer.

All three of the batters who were hit by Wolf scored. Theriot was taken out in the fourth for pinch-hitter Daniel Descalso, who also got plunked.

Pujols' two-run single capped the fourth for a 6-0 lead. It was his first hit with the bases-loaded this season after an 0-for-4 start.

Brewers reliever Mike McClendon struck out five in a row during three perfect innings.

Game notes

Cardinals left-hander Brian Tallet (broken right hand) was to have played catch for the first time Friday but that has been pushed back a week because doctors were concerned about the risk of re-injury. ... Cardinals right fielder Lance Berkman got a scheduled day off, well-timed because he's 3-for-27 against Wolf. ... Theriot is optimistic he can play Saturday. ... Holliday is 20-for-49 (.408) during the hitting streak, lower than his NL-leading .410 average.