ST. LOUIS — Yovani Gallardo allowed only a single to start the eighth inning in Milwaukee's 4-0 victory over St. Louis on Saturday.

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.

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.

The Cardinals' Jaime Garcia carried a perfect game into the eighth Friday and threw a one-hitter in a 6-0 victory over Milwaukee.

St. Louis' Kyle Lohse (4-2) allowed a run and six hits in eight innings.

CUBS 3, REDS 2: At Chicago, Kosuke Fukudome hit a game-ending single as Chicago scored twice in the ninth inning.

Carlos Pena led off the ninth with a homer to tie it. Blake DeWitt also homered for the Cubs, who have won three of four.

PHILLIES 3, BRAVES 0: At Philadelphia, Fill-in starter Kyle Kendrick and four relievers combined on a five-hitter and Ryan Howard homered for Philadelphia.

Kendrick (2-2) allowed two hits, walked one and struck out three in five innings. He replaced Roy Oswalt, who went on the disabled list Friday with lower back inflammation.

PIRATES 6, ASTROS 1: At Pittsburgh, Charlie Morton took a shutout into the eighth inning and Lyle Overbay homered as Pittsburgh won for the fourth time in six games.

NATIONALS 5, MARLINS 2: At Miami, Tom Gorzelanny pitched seven innings and two relievers completed a two-hitter for Washington.

Gorzelanny (2-2) gave up a two-run homer to John Buck — the only runs allowed by the left-hander in his past 18 1-3 innings. Sean Burnett pitched a perfect eighth, and Drew Storen followed with a 1-2-3 ninth for his seventh save in as many chances.

METS 4, DODGERS 2: At New York, Pinch-hitter Justin Turner's single snapped an eighth-inning tie and New York stopped Andre Ethier's hitting streak at 30 games.

Ethier went 0 for 4 with a first-inning walk.

DIAMONDBACKS 6, PADRES 0:

At San Diego, Justin Upton hit a two-run homer and Daniel Hudson won his third straight start for Arizona.

The Padres have been shut out a major league-high eight times in 33 games. They dropped to 6-14 at home, worst in the majors.

GIANTS 3, ROCKIES 2: At San Francisco, Mike Fontenot hit a sacrifice fly in the ninth inning to drive in Aaron Rowand for San Francisco's second walkoff win in two nights.

Rowand and Freddy Sanchez hit consecutive singles off reliever Felipe Paulino (0-3) to begin the rally. After a pitching change, Franklin Morales threw a wild pitch that sailed over the head of catcher Chris Iannetta and advanced both runners. Fontenot then hit a deep fly to right to easily score Rowand.