Todd Walker homered and drove in four runs, Carlos Zambrano won his fourth straight decision and the Chicago Cubs extended their lead in the NL wild-card race with a 12-5 victory last night over the visiting Cincinnati Reds.

Walker was 3 for 4, including a two-run homer -- his 15th of the year -- in the fifth inning. Corey Patterson, Derrek Lee and Jose Macias also connected, and Nomar Garciaparra was 3 for 3 with a walk and a pair of RBI.

"This is a lot of fun for me. For everybody, really," Walker said. "The playoff atmosphere brings out the best in you."

Zambrano (16-8) allowed one run in 61/3 innings to win his third consecutive start. He struck out seven and scattered five hits.

The Reds tagged Todd Wellemeyer for four runs in the eighth, including Adam Dunn's 43rd homer. Dunn also struck out in the first inning, leaving him four shy of Bobby Bonds's single-season mark of 189.

The win moved Chicago a game ahead of the idle San Francisco Giants. Houston remained 11/2 behind by beating St. Louis. The Cubs have six games left in their quest for their first back-to-back postseason appearances since 1908 -- the last time they won a World Series.

* ASTROS: 10, CARDINALS 3: Roy Oswalt became the NL's first 19-game winner and kept host Houston close in the wild-card race.

Pinch hitter Jason Lane homered and Craig Biggio hit a two-run double to end his longest hitless streak of the season. Carlos Beltran added a two-run triple, Morgan Ensberg had a two-run double and Jeff Bagwell and Raul Chavez singled in runs to send the Astros to their fourth win in five games.

The victory snapped St. Louis's five-game winning streak. The Cardinals already clinched the NL Central title and the best record in the league -- but their leadoff hitter went down with an injury.

Speedy second baseman Tony Womack left in the seventh inning after being hit on the left arm by a pitch from Oswalt. Womack writhed in pain on the ground before coming out moments later. He was gingerly clutching his arm at his side as he was escorted back to the dugout.

* DIAMONDBACKS 3, BREWERS 1: Randy Johnson struck out 10 in seven innings to earn his 15th win and host Arizona snapped a six-game losing streak.

Chad Tracy homered and Doug DeVore had an RBI single in his first three-hit game. Third baseman Wes Helms's error led to two unearned runs for Arizona.

Johnson (15-14) walked one in his 13th double-digit strikeout game of the season and 204th of his career -- 11 shy of Nolan Ryan's major league record. Johnson allowed one run and six hits.

* PIRATES 6, PHILLIES 1: Ty Wigginton hit a two-run homer and Oliver Perez pitched 62/3 strong innings, helping Pittsburgh stop a seven-game road losing streak and eliminate Philadelphia from postseason contention.

Tike Redman and Jack Wilson each drove in two runs for the Pirates, who have won two straight after losing 10 of 13.

The disappointing Phillies can at most win 87 games, one fewer than San Francisco or San Diego must finish with because they face each other three times. The Phillies (81-75) need one more victory to earn consecutive winning seasons for the first time since 1982-83. That's little solace for a team picked by many last spring to win the NL East.

* DODGERS 8, ROCKIES 7: In Los Angeles, Milton Bradley singled through a drawn-in infield to drive in the winning run in the ninth inning, and Adrian Beltre hit a grand slam to help the Dodgers defeat Colorado.

* MARLINS 4, EXPOS 1: Josh Beckett pitched seven strong innings and Miguel Cabrera hit his 31st homer, leading Florida on the road.

Only 3,923 fans were on hand for the opener of what is likely the Expos' final series in Montreal. The team is expected to be relocated, likely to Washington, for the 2005 season. Beckett (8-9), last year's World Series most valuable player, scattered four hits for his first win in four starts.