Aramis Ramirez was 3-for-4 with two RBIs, and Corey Patterson had three hits, scored two and drove in one for the Cubs.
Cardinals starter Mark Mulder (13-6) again struggled in a day game, tying a season high with seven runs allowed on nine hits in four innings.
Diamondbacks 3, Marlins 1
In Miami, Troy Glaus and Chad Tracy homered in Arizona's three-run eighth, and Brandon Webb (10-8) limited Florida to four hits and a walk in eight innings.
Tracy tied it in the eighth with a leadoff shot off left-hander Valerio de los Santos (1-2), who left after allowing Luis Gonzalez's single.
Antonio Alfonseca relieved and got Tony Clark to ground to first as Gonzalez advanced to second. Glaus followed with a towering drive into the left-field stands.
Jose Valverde pitched the ninth for his fourth save.
Juan Pierre had an RBI single in the fifth for the Marlins' lone run.
Giants 5, Braves 3
Atlanta, Randy Winn hit a two-out, two-run homer in the seventh inning and San Francisco avoided a sweep in Atlanta.
One night after scoring three runs off John Smoltz in the ninth -- only to lose 5-4 in the 12th -- the Giants made this comeback stick.
Tim Hudson (8-7) cruised through the first six innings, striking out a season-high 10 while the Braves built a 3-1 lead. But San Francisco dealt him the loss with a three-run seventh.
Jason Schmidt (9-6) gave up eight hits and three runs in six innings to beat his original team. Tyler Walker pitched the ninth for his 20th save.
Atlanta's Marcus Giles, who drove in the winning run Wednesday, stretched his career-best hitting streak to 15 games, falling a homer short of the cycle.
Astros 6, Nationals 3
At Houston, Andy Pettitte won for the sixth time in eight starts, and Brad Ausmus had a three-run double in the sixth inning as Houston downed Washington.
Pettitte (10-8) struck out five in eight innings and allowed four hits, his last a two-run homer to Preston Wilson in the seventh.
Ryan Drese (3-6) lost his fifth straight start for the Nationals, who have dropped five of their last six to fall three games behind Houston in the NL wild-card race.
Lance Berkman also doubled and drove in two runs for the Astros.
Jose Guillen, making his first start in five games after sitting out with a sore left shoulder, hit his 20th homer in the ninth for Washington.
Dodgers 5, Phillies 1
At Los Angeles, Odalis Perez pitched eight solid innings, and Jeff Kent provided the go-ahead runs with a two-run double to lead Los Angeles past Philadelphia.
Perez (7-6) held the Phillies to one run on five hits and had a season-high eight strikeouts to help the Dodgers avoid a sweep in the three-game series.
Jason Phillips added a solo homer for Los Angeles.
Philadelphia starter Cory Lidle (9-10) had control problems, giving up four runs on five hits and six walks in five innings.



