Jeff Roberson, Associated Press
Cardinals' Albert Pujols hits his 300th career home run in the eighth inning Friday against the Cubs.

ST. LOUIS — The return of Cubs ace Carlos Zambrano trumped the soap opera setting of Jim Edmonds' homecoming and Albert Pujols' 300th home run.

Zambrano came off the 15-day disabled list from a shoulder strain with six spotless innings Friday night, leading Chicago to a 2-1 victory over the St. Louis Cardinals in the opener of a three-game series matching the National League's top two teams.

Slumping Kosuke Fukudome homered in the first inning and Geovany Soto connected in the fourth to give the Cubs only their third victory in nine games. Both balls came on full-count pitches from Braden Looper, and were the only damage against the right-hander in seven innings.

Pujols became the fifth-youngest player to 300 with an eighth-inning shot off the left-field foul pole against Bob Howry. He's 5-for-9 with two homers against Howry, and made it to the milestone at 28 years, 170 days, beating Hall of Famer Mel Ott by one day. Alex Rodriguez is the youngest to 300 homers at 27 years, 249 days.

Edmonds' first game in St. Louis as an opposing player dominated pre-game discussions, especially after St. Louis manager Tony La Russa said he'd ignore him rather than applaud or boo. La Russa was miffed about Edmonds' recent comments that he was happy to be with the Cubs and tired of talking about his past.

BREWERS 9, PIRATES 1: At Milwaukee, J.J. Hardy and Bill Hall each hit a two-run homer and Ben Sheets worked out of several jams to earn his 10th win as Milwaukee beat Pittsburgh.

REDS 3, NATIONALS 0: At Cincinnati, Ken Griffey Jr. hit a two-run drive for career homer No. 604 and Bronson Arroyo worked six innings to lead the Reds.

Griffey's 11th homer of the season came on a 1-0 pitch from rookie Jason Bergmann (1-6) and gave the nine-time All-Star 5,001 total bases for his career, becoming 18th player to reach that level.

DODGERS 10, GIANTS 7: At San Francisco, Andre Ethier homered and hit a go-ahead two-run double in the sixth and Derek Lowe won for the first time in three starts as Los Angeles rallied for its fourth straight victory.

PHILLIES 3, METS 2: At Philadelphia, Shane Victorino's two-out RBI single in the ninth inning lifted the Phillies.

Duaner Sanchez (3-1) retired the first two batters before Pedro Feliz doubled to left field. Victorino followed with a liner to right on a 1-2 pitch to score Feliz and send a sellout crowd into a frenzy.

BRAVES 6, ASTROS 2: At Atlanta, Jason Perry hit a run-scoring triple in his first major league at-bat, Tim Hudson gave up only one run in seven innings and Atlanta ended a five-game losing streak.

Mark Kotsay's run-scoring fly to center field in the second inning gave the Braves a 1-0 lead, and Perry followed with a triple to the right-field wall that drove in Brian McCann from first base.

ROCKIES 18, MARLINS 17: At Denver, in a throwback to the pre-humidor days, Colorado beat Florida after trailing by nine runs in the biggest comeback in Rockies history. Chris Iannetta singled home the winning run off Kevin Gregg in the ninth inning.

PADRES 5, DIAMONDBACKS 1: At Phoenix, Cha Seung Baek threw six shutout innings as San Diego beat Arizona to drop the NL West leaders below .500.

American League

RED SOX 6, YANKEES 4: At New York, Mike Lowell hit a go-ahead, three-run homer two innings after Kevin Youkilis' shot squirted out of Johnny Damon's glove, bounced off the top of the left-field wall three times, and sat on the fence for several tantalizing seconds.

Youkilis' ball rolled back to the field for a tying, two-run triple, helping spark Boston to a soggy come-from-behind victory over New York.

MARINERS 4, TIGERS 1: At Seattle, Raul Ibanez clanged a solo home run off the windows of a restaurant in right field and a pair of Seattle relievers helped finish what Erik Bedard started.

Jose Lopez added a key two-run double late to help the Mariners win for the eighth time in 11 games. Ibanez's 10th homer of the season broke a 1-all tie in the fourth, and Lopez sealed the victory with a two-out, two RBI double off Detroit starter Kenny Rogers (6-6) in the eighth.

ORIOLES 10, RANGERS 4: At Baltimore, Freddie Bynum tied a career high with three RBIs, and the Orioles roughed up 10-game winner Vicente Padilla.

RAYS 11, ROYALS 2: At St. Petersburg, Fla., Edwin Jackson took a two-hitter into the eighth inning and Carlos Pena homered and drove in five runs to help AL East-leading Tampa Bay win its fifth straight.

ATHLETICS 7, WHITE SOX 1: At Chicago, Jack Cust hit a two-run homer and Joe Blanton pitched seven solid innings to lead the Athletics to the win.

Emil Brown and Wes Bankston both had three hits for Oakland, which finished with 17 hits.

TWINS 12, INDIANS 3: At Minneapolis, Delmon Young hit a three-run homer and finished with a season-high four RBIs to help the Twins win for the 14th time in their last 16 games.

ANGELS 8, BLUE JAYS 2: At Anaheim, Calif., Howie Kendrick drove in three runs, and the Angels got homers from Torii Hunter and Garret Anderson.