With one swing of the bat, Lance Berkman revived the Houston Astros' playoff hopes _ and gave the Los Angeles Dodgers a much-needed reprieve. Berkman hit a three-run homer off Dustin Hermanson, highlighting a five-run ninth inning that sent Houston to a 7-3 win over San Francisco on Thursday night.
A loss would have put the Astros four games behind the Giants in the NL wild-card race. Instead, they remained 2 1/2 games behind the Chicago Cubs, who beat Pittsburgh 6-3 and took a half-game lead over San Francisco.
``This has been crazy,'' Berkman said. ``It seems like every time we're on the brink of destruction or elimination, something crazy happens.''
The Giants dropped 1 1/2 games behind the NL West-leading Dodgers. Los Angeles, which starts a three-game series in San Francisco on Friday night, beat San Diego 9-6.
In other NL games, it was St. Louis 4, Milwaukee 2; New York 4, Montreal 2; Cincinnati 3, Atlanta 2; and Philadelphia 9, Florida 8 in 10 innings. Also, Colorado swept a doubleheader against Arizona, 7-1 and 2-1 in 10 innings.
At San Francisco, the Astros trailed 3-2 when Carlos Beltran and Jeff Bagwell led off the ninth with singles _ including Bagwell's dribbler, which took an inexplicable 90-degree turn to stay fair down the third-base line. Berkman followed with his 29th homer, which hung high in the air before barely reaching the first row of seats in the elevated arcade on the right-field wall.
The Giants quickly came unglued after that. Hermanson (6-7) and manager Felipe Alou were ejected when the reliever hit Jeff Kent with the next pitch.
``I'm not going to say anything about it,'' Hermanson said. ``I just didn't do my job tonight. I was going for a ground ball with Berkman. The ball was down and in, and he golfed it out.''
The Astros added two more runs in the ninth on Jason Lane's RBI single and Raul Chavez's sacrifice bunt.
Dan Miceli (6-6) got one out in the eighth for the win.
Both clubs were warned after benches cleared in the third, when rookie Brandon Backe nearly hit Barry Bonds with a low pitch.
``We've got no beef with Barry Bonds,'' Houston manager Phil Garner said. ``We've got absolutely no reason to hit anybody on that ballclub.''
Dodgers 9, Padres 6
At San Diego, Cesar Izturis homered and Adrian Beltre had three hits for Los Angeles.
The Dodgers knocked out Brian Lawrence (15-13) after four innings and went up 7-0 in the fifth.
Rookie Yhency Brazoban (3-0) pitched two scoreless innings in relief for the win. Eric Gagne pitched a perfect eighth before allowing two runs in the ninth. He held on for his 43rd save in 45 chances.
Cubs 6, Pirates 3
At Pittsburgh, Greg Maddux reached 15 wins for a record 17th consecutive season, leading Chicago into the wild-card lead.
Maddux (15-10) also hit a two-run single in a four-run second inning. LaTroy Hawkins pitched a perfect ninth for his 22nd save in 30 chances.
Nelson Figueroa (0-3) gave up four runs and five hits in two innings for Pittsburgh.
Cardinals 4, Brewers 2
At Milwaukee, St. Louis reached 100 wins for the first time since 1985 and the seventh time overall.
Yadier Molina hit his first major league home run in the eighth off Matt Wise (1-2) to break a 2-all tie. Hector Luna followed with his third homer of the season.
Cal Eldred (4-2) got the win in relief. Jason Isringhausen pitched the ninth for his league-leading 45th save in 52 chances, completing a four-hitter.
Mets 4, Expos 2
At Montreal, Tom Glavine (10-13) won for just the third time since mid-June, and Gerald Williams and Victor Diaz homered for New York.
Braden Looper pitched the ninth for his 27th save in 32 chances.
Brad Wilkerson went 3-for-4 with two homers for Montreal. Tomo Ohka (3-6) made his first start since breaking his forearm June 10. He allowed eight hits and four runs in five innings.
Reds 3, Braves 2
At Atlanta, Gabe White earned his first save in over four years, preserving Cincinnati's win and preventing Atlanta from clinching its 13th consecutive division title.
The Braves' magic number in the NL East was reduced to one when Philadelphia beat Florida.
With one out in the ninth and the Reds ahead 3-1, White came on with the bases loaded. Chipper Jones hit a sacrifice fly to make it 3-2, and Johnny Estrada hit a popup to second. It was White's first save since September 1, 2000.
Cincinnati rookie Luke Hudson (4-2) allowed one run and two hits in five innings with a career-high eight strikeouts.
Jaret Wright (15-8) gave up four hits and two runs in six innings.
Phillies 9, Marlins 8, 10 innings
At Miami, Jimmy Rollins homered off Armando Benitez (2-2) in the 10th inning for Philadelphia.
Billy Wagner (4-0), who gave up the tying run in the ninth, got the win. Todd Jones got three outs for his second save.
Philadelphia's Jim Thome hit a three-run home run in the fifth _ his 42nd.
Rockies 7, Diamondbacks 1, 1st game
Rockies 2, Diamondbacks 1, 10 innings, 2nd game
At Denver, Jeromy Burnitz drove in the winning run with a bloop single in the 10th inning to give Colorado a doubleheader sweep against Arizona.
Todd Helton doubled to right to start the 10th against Randy Choate (2-4), who then walked Vinny Castilla intentionally. Burnitz followed with a single in front of left fielder Andy Green.
Allan Simpson (2-1) worked a scoreless 10th to earn the victory.
In the opener, Jeff Francis (3-2) gave up one run and seven hits and matched a career high by striking out eight. Arizona's Brandon Webb (6-16) allowed three runs and seven hits in six innings.