J.T. Snow singled in the winning run with one out in the ninth and Barry Bonds homered twice to lead the Giants to their sixth straight victory, 5-4 over the Montreal Expos last night in San Francisco.

Jason Schmidt pitched eight strong innings, but the bullpen blew his chance to become the majors' first 16-game winner.

Snow singled to right off Luis Ayala (4-9) and right fielder Juan Rivera tried to throw out pinch runner Ricky Ledee at the plate, but the ball sailed into the stands behind home plate.

Kirk Rueter, Monday's starter, had a pinch-hit bunt single in the ninth -- his second career pinch-hit appearance -- and Ledee ran for him.

Dustin Hermanson (5-5) blew his first save in five chances, but earned the win. He came on in relief of Scott Eyre with one out in the top of the ninth.

Eyre was called in to relieve Schmidt, who left with an apparent injury after coming out to start the ninth.

Eyre walked pinch hitter Rivera, then got Nick Johnson to ground into a fielder's choice. Hermanson entered and gave up an RBI double to Alex Gonzalez. Pinch hitter Tony Batista then singled for the tying run.

Schmidt allowed two runs -- one earned -- on four hits in eight innings, struck out seven and walked two.

* CARDINALS 7, REDS 2: Tony Womack scored the go-ahead run on a bases-loaded walk from Danny Graves in the eighth inning and Larry Walker hit the next pitch for a grand slam to lead St. Louis at home.

The NL Central leader is 13-2 against the Reds this season and will try to complete a three-game sweep today.

Albert Pujols, who had homered in each of his previous four games, had a sacrifice fly in the first. He was 1 for 4 and is 10 for 22 with five homers and 12 RBI in his last five games.

* ASTROS 5, PHILLIES 0: Roy Oswalt and two relievers combined on a five-hitter, and Raul Chavez hit a three-run double in Philadelphia.

Oswalt (13-8) allowed five hits, struck out seven and walked two in 72/3 innings to win his fifth straight decision. Mike Gallo got one out in the eighth, and Dan Miceli pitched a perfect ninth for the Astros' third win in nine games -- and their 10th shutout this season.

* BREWERS 3, CUBS 1: In Milwaukee, Victor Santos (10-8) allowed just one run in 61/3 innings to win for the first time since beating Chicago on July 16.

Bill Hall had a two-run triple for last-place Milwaukee, which was helped by Nomar Garciaparra's error and improved to 7-5 against the Cubs this season.

Santos, who had lost five straight starts, struck out six, walked one and allowed five hits. He gave up his only run in the second, when Sammy Sosa hit his 26th homer.

* PADRES 11, BRAVES 6: In San Diego, Jake Peavy struck out nine in seven innings and Freddy Guzman got a hit, scored a run and had an RBI in his major league debut.

* DODGERS 6, MARLINS 1: Wilson Alvarez (7-3) won his fourth straight decision, and Steve Finley and Adrian Beltre each homered and drove in a pair of runs in Los Angeles.

* PIRATES 7, DIAMONDBACKS 1: Craig Wilson and Ty Wigginton each hit home runs to lead visiting Pittsburgh to its fourth straight win.

* ROCKIES 6, METS 4: Jason Jennings overcame a slow start to pitch seven solid innings and Matt Holliday drove in the go-ahead run with a solo homer in the sixth in Denver.