HOUSTON — Roy Oswalt became the NL's first 20-game winner, and Jeff Kent and Craig Biggio each homered twice against the Rockies, giving the Astros the wild-card lead with a 9-3 victory.
The Astros's 17th straight home victory gave them a one-game lead over the San Francisco Giants, who lost 7-3 to the Los Angeles Dodgers. The Chicago Cubs were eliminated from the postseason race after losing their fifth straight, 8-6 to Atlanta.
With a victory in the regular-season finale Sunday or a Giants loss, Houston will clinch the NL's final playoff spot — an improbable thought almost a month ago when it was four games below .500 and seven games behind the Cubs.
If the Astros lose and the Giants win Sunday, the teams would play Monday afternoon in San Francisco to determine the wild card.
Kent hit a two-run shot off Adam Bernero in the fifth for his 278th home run as a second baseman, breaking Ryne Sandberg's major league record.
Oswalt (20-10) won 20 games for the first time in his career, allowing only one run and five hits in seven innings.
BRAVES 8, BRAVES 6: At Chicago, now make it 59 years without a World Series appearance by the Chicago Cubs.
A season that started with such high hopes for the Cubs wound up with them being eliminated from playoff contention by their fifth straight loss. The Cubs led the NL wild-card race by 1 1/2 games before dropping seven of eight.
Kevin Gryboski (3-2) pitched a scoreless seventh and John Smoltz got his 44th save with 1 1-3 innings of relief. Kyle Farnsworth (4-2) took the loss.
Moises Alou, Aramis Ramirez and Sammy Sosa all homered for the Cubs, but Carlos Zambrano couldn't hold a 6-2 lead. J.D. Drew hit a two-run triple in the eighth to lift the Braves.
The NL East champion Braves won but starter John Thomson — scheduled to open Game 2 of the divisional series — left after three innings with a stiff back. Chipper Jones departed after being hit near the right hand with a pitch in the fifth. He had a bruise, no X-rays were needed and he'll be evaluated daily.
BREWERS 5, CARDINALS 1: St. Louis, Ben Sheets (12-14) pitched his fifth complete game of the season and Milwaukee took advantage of a shaky playoff tuneup by Jason Marquis (15-7) for a victory over the Cardinals. The NL Central champions have lost five of six with one game to go in the regular season and at 104-57 missed a chance to tie the franchise record of 106 victories set in 1942. They're 7-7 since clinching the division on Sept. 18.
Sheets allowed eight hits and an unearned run, winning for only the third time in 13 decisions since the All-Star break. He struck out 10 for a career-high 263, second-best in the NL behind Randy Johnson.
Marquis threw 112 pitches in 4 2/3 innings, giving up three runs and five hits.
PIRATES 3, REDS 1: At Cincinnati, Jason Kendall had three hits and Jose Castillo homered off the Cincinnati Reds' record-smashing pitching staff for Pittsburgh. The emotional highlight came in the eighth, when Barry Larkin got a standing ovation for a pinch-hit single, then left for a pinch-runner. The 40-year-old shortstop is wrapping up his 19th and possibly final season with the Reds.
Castillo's two-run homer in the second off Todd Van Poppel (4-6) was the 235th off the Reds, the most allowed by any pitching staff in the majors this season. It's a Reds team record for homers allowed and four shy of the NL record, set by the 2001 Rockies. The major league record is 239 homers given up by the 1996 Tigers.
Josh Fogg (11-10) allowed three hits in six innings, including a triple and homer by Darren Bragg. Jose Mesa pitched the ninth for his ninth consecutive save, giving him 42.
MARLINS 4, PHILLIES : At Philadelphia, Mike Lowell and Miguel Cabrera homered to lead Florida over Philadelphia, hours after the Phillies fired manager Larry Bowa. Bowa led the Phillies to consecutive winning seasons for the first time in 21 years, but they failed to reach the playoffs for the 11th straight season after coming in as favorites to win the NL East. Bench coach Gary Varsho managed the team Saturday and will be on the bench for Sunday's finale. Josh Beckett (9-9) gave up an RBI single to Tomas Perez in the second and a solo homer to Jason Michaels in the sixth. He allowed seven hits and struck out five in eight innings.
Armando Benitez picked up his 47th save. Eric Milton (14-6) retired 13 straight in one stretch, but allowed four runs and three hits in seven innings, while striking out seven.
DIAMONDBACKS 7, PADRES 6: At Phoenix, Randy Johnson got some rare offensive support, including his own two-run double, and Arizona rallied from a five-run deficit to beat San Diego. Johnson (16-14) allowed six runs — only one earned — and 10 hits in eight innings. He struck out eight and walked none to cap a strong season made more impressive by the struggles of the Diamondbacks, who have lost 111 games. Chris Snyder's two-run double put Arizona up 7-5 in the fifth. Miguel Ojeda's leadoff homer in the eighth cut it to 7-6.
EXPOS 6, METS 3: At New York, Brad Wilkerson hit a tiebreaking three-run homer in the ninth inning in the Expos' next-to-last game before moving to Washington. Wilkerson, who also had two doubles, connected against reliever Braden Looper (2-5) after an error by Kaz Matsui — making his second start at second base — and a walk to pinch-hitter Ryan Church. Juan Rivera and Valentino Pascucci also homered for the Expos.
Chad Cordero (7-3) got two outs for the win. Gary Majewski pitched the ninth for his first major league save.
Mike Cameron hit his career-high 30th homer for the Mets.