Ivan Rodriguez and Luis Castillo hit back-to-back solo homers in the seventh inning on Tuesday as the Florida Marlins withstood a ninth-inning rally to beat the Chicago Cubs 4-3.
Dontrelle Willis was impressive again, allowing four hits and striking out seven in 5 2-3 scoreless innings against the team that drafted him. He left after a rain delay of 1 hour, 24 minutes in the bottom of the sixth.
Nate Bump (2-0) won and Braden Looper pitched the ninth for his 16th save.
"The kid did a good job coming in," Marlins manager Jack McKeon said of Bump, who was called up from Triple-A on June 29. "I threw that kid right in the fire."
Mike Remlinger (5-3) allowed two homers and a walk in two-thirds of an innings. Sammy Sosa hit his 14th homer.
It was the 10th loss in 14 games for the Cubs.
"You can't go get drunk every time you have a bad game, or you'd be drunk all the time," Cubs manager Dusty Baker said. "So these are the games where you sit around, you think about it ... and try not to take it home to your wife and family. They know how you feel."
Giants 8, Cardinals 3
In San Francisco, Jose Cruz Jr. homered off Dan Haren (0-2) in the first inning and drove in four runs.
Jim Brower (5-1), pitching after starter Kirk Rueter strained his left shoulder, allowed one run and two hits in 4 1-3 innings as San Francisco completed a two-game sweep of St. Louis.
Braves 5, Mets 3
In New York, Shane Reynolds (6-4), came back from a string of three starts to allow two runs and eight hits in six innings as Atlanta beat New York for its fifth straight win.
Vinny Castilla homered and drove in three runs for the Braves, while John Smoltz worked the ninth for his 33rd save.
Rookie Jason Roach (0-2), promoted from minor league team Norfolk a day earlier when Al Leiter was put on the disabled list, made his second major league appearance and gave up five runs and eight hits in six innings.
Phillies 13, Expos 6
In Montreal, Mike Lieberthal had three doubles and four RBIs, and Bobby Abreu hit a three-run homer as Philadelphia beat Montreal to stop a four-game losing streak.
Placido Polanco had four hits, including his seventh homer.
Marlon Byrd, who batted leadoff for the first time this season, had three hits and three RBIs, including a two-run homer.
Brett Myers (9-6) won his fourth straight start, allowing four runs -- three earned -- and eight hits in 6 1-3 innings. Claudio Vargas (6-4) gave up six runs and eight hits in seven innings.
Astros 6, Reds 3
In Houston, Tim Redding stopped his four-game losing streak and Morgan Ensberg hit a two-run homer as Houston handed Cincinnati its sixth straight loss.
Redding (5-8) allowed two runs and four hits in 5 2-3 innings to win, and Billy Wagner pitched the final 1 1-3 innings for his 23rd save.
Jimmy Haynes (1-9), who lost his fourth consecutive decision, gave up six runs, six hits and five walks in 5 2-3 innings. He struck out six.
Pirates 8, Brewers 7, 10 innings
In Milwaukee, Jack Wilson hit a two-run homer in the 10th inning as Pittsburgh overcame another blown save by Mike Williams to beat Milwaukee.
Trailing 8-6, Milwaukee put runners on first and second with two out in the 10th inning. John Vander Wal singled off Salomon Torres, scoring Scott Podsednik, but center fielder Kenny Lofton's strong throw got Geoff Jenkins at third.
Wilson's homer off Mike DeJean (2-7) with two outs in the 10th provided the winning margin.