ST. LOUIS -- Ryan Ludwick nearly hit for the cycle and had two RBI to lead the St. Louis Cardinals' comeback from a three-run deficit in a 5-3 victory against the Milwaukee Brewers on Wednesday night.
Rebounding from a 12-0 rout Tuesday, the Cardinals scored four runs in the eighth and pulled within 3½ games of Milwaukee for the NL wild-card lead.
The Brewers took the season series 10-5 and had won seven in a row against the Cardinals before Wednesday.
Ludwick hit his 32nd home run off Manny Parra in the sixth.
Albert Pujols doubled off David Riske (1-2) to start the eighth and Ludwick followed with an RBI double. Troy Glaus singled to tie the score and he later scored the go-ahead run when shortstop J.J. Hardy short-hopped a throw to the plate on pinch-hitter Aaron Miles' grounder against a drawn-in infield.
Ryan Franklin (5-5) worked a scoreless eighth and rookie Chris Perez finished for his sixth save.
Hardy had three hits and an RBI. Full story
Astros 4, Reds 1
HOUSTON -- Roy Oswalt beat Cincinnati yet again, limiting the Reds to five hits in seven innings.
Hunter Pence and Ty Wigginton hit two-run homers to help Oswalt beat the Reds for the 22nd time in 23 decisions.
Oswalt (12-9) struck out three and allowed only four baserunners in his last five innings. The Houston ace has won seven consecutive decisions against Cincinnati since a 5-4 loss at Great American Ball Park on April 28, 2006. He hasn't lost to the Reds in Houston since 2004.
Pence hit a home run off Josh Fogg (2-7), the Cincinnati starter who has dropped his past five decisions and his past seven against Houston. Fogg hasn't won in six starts since he was hit in the mouth by Joey Votto's line drive during batting practice on July 22. Fogg needed 30 stitches to his upper lip.
Wigginton hit a home run in the seventh against Houston native Gary Majewski and has hit eight of his 17 home runs this month.
LaTroy Hawkins pitched a scoreless eighth and Jose Valverde earned his 34th save for the Astros, who've won nine of 11 meetings with the Reds this season and 13 of the past 15 matchups overall.
Marlins 4, Braves 1
ATLANTA -- Florida's Josh Johnson threw a four-hitter for the first complete game of his career.
Hanley Ramirez had a two-run single and Dan Uggla hit his 28th home run for the Marlins, who have won three of five.
Johnson (4-0) struck out eight and walked three to improve to 3-0 with a 2.58 ERA in six starts on the road this season.
The right-hander, who returned July 10 for his first start since undergoing elbow ligament replacement surgery last August, previously pitched a career-high 7 2/3 innings on Aug. 28, 2006, against Milwaukee.
Mike Hampton (2-2) allowed eight hits and three runs, walked two and struck out five in eight innings, his longest outing since April 17, 2005, at Philadelphia.
The Braves have lost 13 of 16.
Giants 4, Rockies 1
SAN FRANCISCO -- Bengie Molina and Pablo Sandoval hit back-to-back home runs in the seventh inning and San Francisco avoided a three-game sweep.
After Molina's one-out home run off Livan Hernandez (1-3) tied the game at 1, Sandoval connected for his first major league home run to knock with a drive just inside the left-field foul pole. It was the second time this year San Francisco has hit successive home runs. Molina and Aaron Rowand did it May 23 at Florida.
Tim Lincecum (15-3) struck out 10 to boost his majors-leading total to 210. He lowered his ERA from 2.48 to 2.43, tied for best in the big leagues with Cleveland's Cliff Lee. Lincecum won three consecutive starts for the first time since April and won his fourth consecutive decision, improving to 13-2 in 22 starts following San Francisco losses.
Brian Wilson got four outs for his NL-best 36th save.



