Woody Williams outpitched Jason Schmidt and outdueled Barry Bonds to make his 100th win even sweeter.

Williams pitched 61/3 dominant innings last night in San Francisco for his fifth straight victory, and Scott Rolen's first-inning homer stood up in the St. Louis Cardinals' 6-1 victory over the Giants.

Williams (8-6) allowed five hits and two walks, retiring the final 12 hitters he faced, including getting Bonds three times.

Both Schmidt and Williams entered with 99 career victories, but Schmidt couldn't overcome his early mistake to Rolen, who hit a two-run shot on the first pitch he saw. St. Louis added four late runs against San Francisco's bullpen.

Schmidt (13-4) struck out 10 in seven innings, allowing six hits and two walks while losing his second straight start in San Francisco.

It was Williams's first win over the Giants since July 25, 2000. The 37-year-old pitcher needed 12 seasons to get his 100th victory, while the 31-year-old Schmidt already is in his 10th season. But Williams's up-and-down career bloomed in his late thirties: He has 49 wins in the past four seasons.

Jim Edmonds drove in two runs, and Mike Matheny and Albert Pujols added run-scoring singles for St. Louis, which has won each of Williams's past nine starts. Four months into their best start since 1968, the Cardinals took two of three from San Francisco to split the season series at three games apiece.

* ASTROS 7, REDS 5: Adam Everett's eighth-inning suicide squeeze drove in the go-ahead run, and Roy Oswalt (11-8) improved to 13-0 against Cincinnati as Houston came from behind to win on the road.

Morgan Ensberg had three RBI for the Astros, including a sacrifice fly in the eighth that cut their deficit to 5-4. Ensberg added an RBI double in the ninth to make it 7-5, sending slumping Cincinnati to its 10th loss in 11 games.

* DODGERS 2, PADRES 1: Pinch hitter Robin Ventura homered in the 12th inning, giving Los Angeles a victory in San Diego.

Steve Finley went 2 for 4 with a double and a run in his first start for the Dodgers since being acquired Saturday in a five-player deal with Arizona.

Eric Gagne (4-0) pitched three scoreless innings for the win, the first time he pitched more than two innings since he became the team's closer in 2002.

* BRAVES 6, METS 5: Andruw Jones homered and drove in four runs off former teammate Tom Glavine, and Atlanta completed a three-game sweep at home.

Eli Marrero and Chipper Jones each had three hits for the Braves, who won their fifth straight, and seventh in eight games, to move a season-high 12 games over .500 (58-46).

Paul Byrd (3-3) retired 15 of the first 16 batters he faced through five hitless innings before faltering in the sixth with a 6-0 lead. He lost his bid for a no-hitter when David Wright led off with a solo homer to left, then left after Cliff Floyd's three-run shot later in the inning.

* BREWERS 8, PIRATES 7: Bill Hall's bases-loaded single in the ninth gave Milwaukee the win at home.

The Pirates rallied for two runs in the top of the ninth against closer Dan Kolb to tie it at 7. But Geoff Jenkins doubled leading off the bottom half and went to third on Wes Helms's single. After an intentional walk to Lyle Overbay, Hall grounded a single through a drawn-in infield.

Jenkins also homered for the Brewers, and Luis Vizcaino (4-2) got two outs for the win.

* ROCKIES 10, DIAMONDBACKS 2: Jeromy Burnitz drove in four runs with two homers as Colorado completed a three-game sweep in Denver.

Vinny Castilla, Todd Helton and Aaron Miles also homered for the Rockies, who have won seven straight against the Diamondbacks.

* EXPOS-MARLINS, PPD.: The game was postponed in Miami because of rain after a 1-hour 37-minute delay with Montreal leading 2-0 in the fourth. The game will be made up as part of a doubleheader on Sept. 14 in Miami.

Diamondbacks left fielder Luis Gonzalez and fans in Denver all look to pull down a two-run, third-inning homer hit by Rockies' Todd Helton.