Albert Pujols homered leading off the ninth inning, and John Mabry was 4 for 4 with four RBI to lead the St. Louis Cardinals to a 5-4 victory over the visiting Montreal Expos last night.

Pujols hit his 31st homer of the season, a drive off Chad Cordero (3-2) that capped a comeback from a 3-0 deficit. The NL Central leaders have won seven of nine.

Montreal's Alex Gonzalez, who had three hits, tied the game at 4 in eighth with a double off Steve Kline that scored Terrmel Sledge, who reached on a two-base throwing error by second baseman Tony Womack.

St. Louis made three errors in all. Mike Matheny's bad throw in the eighth was his first error in 252 games dating from Aug. 1, 2002, a record streak for catchers.

Brian Schneider put Montreal ahead with an RBI double in the second, and Expos starter Livan Hernandez hit a two-run double in the fourth to make it 3-0.

Mabry contributed a two-run homer in the fifth and a two-run double in the seventh.

* BRAVES 5, ASTROS 4: In Houston, John Thomson pitched four-hit ball for seven innings, and Chipper Jones hit a pair of run-scoring singles for Atlanta.

Jeff Bagwell hit a two-run homer in the ninth off John Smoltz, who finished for his 26th save. Bagwell's 16th home run of the season was the 435th of his career, passing Juan Gonzalez for 31st place on the all-time list.

Thomson (9-7) gave up two runs, striking out two and walking one, for the NL East-leading Braves, who won for the 10th time in 12 games.

* CUBS 11, ROCKIES 8: Aramis Ramirez hit a tiebreaking solo homer in the top of the eighth inning after Nomar Garciaparra tied it on Shawn Chacon's wild pitch moments earlier as Chicago won in Denver.

Sammy Sosa hit his 24th home run for the Cubs, a three-run shot in the seventh inning. Todd Helton hit his 25th homer for Colorado.

* DIAMONDBACKS 11, MARLINS 6: In Phoenix, Randy Johnson pitched solid six innings to end his three-game losing skid, and Roberto Alomar had four hits -- including a home run -- and three RBI to lead Arizona.

Johnson (11-9) gave up five runs, seven hits and two walks while matching a season low for strikeouts with four. Josh Beckett (4-7) allowed five earned runs on nine hits over four innings; he has lost four straight decisions.

* PHILLIES 7, PADRES 5: Jimmy Rollins hit an inside-the-park homer, and Eric Milton won for the first time in six starts for visiting Philadelphia.

David Bell added a two-run homer for the Phillies. Milton is the first Phillies pitcher to go 12-2 since Steve Carlton was 13-2 in 1980.

* DODGERS 2, PIRATES 1: In Los Angeles, Jose Lima (10-3) held Pittsburgh to one run and six hits over seven innings to win his fourth straight decision. Alex Cora hit a tiebreaking home run with two outs in the seventh for the Dodgers.

The NL West leaders won for the 23rd time in 29 games and put themselves a season-high 20 games over .500. Eric Gagne got his 32nd save.

* METS 6, BREWERS 5: First baseman Lyle Overbay botched Gerald Williams's bunt for a tiebreaking two-run error in a five-run seventh, and visiting New York beat Milwaukee for its first two-game winning streak in nearly a month. Mike Cameron hit his 23rd home run for the Mets and has seven in his last 11 games.

* REDS 8, GIANTS 7: Adam Dunn hit two homers, and Felipe Lopez added a go-ahead two-run shot in the sixth as Cincinnati won in San Francisco.

The Reds won but got another scare. Ken Griffey Jr. went 2 for 3 with his 400th career double in his first appearance since tearing his hamstring on July 10, but the veteran left in the fifth inning with stiffness in his hamstring.