Cubs pitcher Carlos Zambrano connects for a single against Pittsburgh in the sixth inning Friday.

PITTSBURGH — Carlos Zambrano had four hits to go with a stellar seven innings on the mound and Reed Johnson hit a three-run home run and two doubles as the Chicago Cubs extended their mastery of division rival Pittsburgh by winning 12-3 Friday night.

The Cubs, who lead the NL Central, are 9-1 against the Pirates this season.

Zambrano (7-1) gave up two runs and six hits, and his four-hit game was the first by a Cubs pitcher since Lew Burdette on July 23, 1964. His 4-for-5 elevated his average to .343, which is higher than any Pirates starting position player.

Zach Duke (2-3) was lifted after allowing 10 of the Cubs' 18 hits and five runs.

In an unusual scene, managers John Russell of Pittsburgh and Lou Piniella argued at the same time in the fourth after Jason Bay hit a long fly ball that a fan in the right-center grandstands muffed as he leaned over the outfield railing.

Piniella thought Bay should have had a ground-rule double. Russell wanted a home run.

DIAMONDBACKS 11, BRAVES 1: At Atlanta, Doug Davis gave up only one run in seven innings and the Diamondbacks used a five-run first inning to roll past Atlanta. Davis (2-1) was strong in his first major league start since April 8, giving up five hits, with four strikeouts and two walks. Doctors removed Davis' cancerous thyroid gland on April 10 and declared him cancer-free this month. Stephen Drew and Eric Byrnes hit homers and Chris Snyder added a two-run double in Arizona's five-run first inning. Conor Jackson, Chris Young and Mark Reynolds also hit homers.

Atlanta's Jo-Jo Reyes (2-2) gave up six hits and eight runs, seven earned, in five innings. He walked three, including two in the first.

GIANTS 8, MARLINS 2: At Miami, Barry Zito earned his first win of the season after eight straight losses, Bengie Molina and Aaron Rowand hit consecutive home runs, and Jose Castillo also connected to help the Giants win their third consecutive game. Zito (1-8) allowed one run and three hits in 6 1-3 innings. He struck out five and walked four for his first victory since Sept. 30, 2007.

Making his 10th start this year, the left-hander avoided becoming the first starter in franchise history to begin a season 0-9. The 2002 AL Cy Young Award winner, Zito has been a bust in San Francisco since signing a $126 million, seven-year contract before last season.

Scott Olsen (4-2) allowed seven runs and eight hits, struck out two and walked three in his shortest outing of the season for Florida.

NATIONALS 5, BREWERS 1: At Washington, the Nationals turned Milwaukee shortstop J.J. Hardy's error into four unearned runs in the sixth inning to give Brian Sanches a win in his Washington debut. The Nationals sent six men to the plate after Hardy bobbled Cristian Guzman's routine double-play bouncer in the sixth inning, breaking a 1-1 tie and making a hard-luck loser out of Brewers starter Jeff Suppan (2-4). Ryan Zimmerman drove in a run with a double, Lastings Milledge got an RBI grounder, and Jesus Flores doubled in two more.

Sanches (1-0), promoted earlier in the day from Triple-A Columbus, struck out the side while allowing one hit in the sixth. His one inning of work was enough to earn him his second major league victory — the first came last year with the Philadelphia Phillies.

ASTROS 4, PHILLIES 3: At Houston, Jose Valverde earned a save after getting struck in the face with a line drive and Hunter Pence hit two homers for Houston. Valverde earned his 15th save 18 chances after Pedro Feliz smacked a lineer off the right side of his face. The closer allowed four hits and two runs in an eventful ninth, before Shane Victorino flew out to center with runners on second and third to end it.

ROCKIES 6, METS 5 (13): Matt Holliday singled in Jonathan Herrera in the bottom of the 13th to defeat the Mets. Colorado tied the game in the bottom of the ninth and had runners at second and third base but could not score in regulation.

AMERICAN LEAGUE

BLUE JAYS 7, ROYALS 1: At Toronto, Roy Halladay won for the third time in four starts, Marco Scutaro matched a career high with four RBIs and the Toronto Blue Jays beat Kansas City 7-1 on Friday night, handing the Royals their fifth straight loss. Halladay (5-5) threw his major league-leading fifth complete game and his first since a run of four straight ended April 29 at Boston. He is 8-3 in 13 career starts against the Royals.

Kansas City starter Zack Greinke (5-2) allowed a season-high six runs on nine hits in five innings, matching his shortest outing this year. He walked two and struck out two.

In a matchup of the American League's two lowest-scoring offenses, the light-hitting Scutaro did the most damage, connecting for two-run singles in his first two at-bats.

YANKEES 13, MARINERS 2: At New York, Andy Pettitte struck out nine to win for the first time in over a month, Shelley Duncan hit a go-ahead, three-run homer and the Yankees put together an eight-run fifth. Robinson Cano and Hideki Matsui added two-run hits against Erik Bedard (3-3), who gave up a career-high nine runs and lost at Yankee Stadium for the second time in three weeks. Mariners manager John McLaren was ejected by plate umpire Mike DiMuro in the second inning for arguing after Ichiro Suzuki took a called third strike. Yankees manager Joe Girardi was missing, too, from this matchup of last-place teams. He served a one-game suspension as the result of an argument the previous night when he kicked his hat and inadvertently sent dirt onto an umpire.

RAYS 2, ORIOLES 0: At St. Petersburg, Fla., Matt Garza took a four-hitter into the eighth inning and Carl Crawford snapped a scoreless tie with a fifth-inning single to help Tampa Bay. The Orioles have been shut out two of the past three games and were 0-for-6 with runners in scoring position against Garza (3-1). They've been outscored 12-1 during a three-game losing streak and haven't homered in 28 1/3 innings.

Garza walked four and struck out four before being replaced by Trever Miller with one out and a runner on first in the eighth. Miller induced an innning-ending double play.

Baltimore starter Jeremy Guthrie (2-5) was almost as good as Garza, allowing one run and four hits in 6 2-3 innings.

TWINS 9, TIGERS 4: At Detroit, Kevin Slowey pitched seven shutout innings for Minnesota. Last-place Detroit (20-28) scored 30 runs in a three-game sweep of Seattle, but Slowey (1-4) pushed them back into a slump. The Tigers had scored 14 runs in their previous seven games before clobbering the Mariners.

Slowey gave up four hits and three walks in six innings for his first win since Sept. 23.

Detroit's Armando Galarraga (3-2) struggled with his control for the second straight start, walking five batters while giving up five runs in six innings.

Dontrelle Willis replaced Galarraga in his first appearance since April 11. He allowed one run on a hit and two walks in one-plus innings.

ANGELS 3, WHITE SOX 1: At Chicago, Joe Saunders took a shutout into the ninth inning, Torii Hunter homered and the Angels snapped Chicago's eight-game winning streak. Gavin Floyd (4-3) took the loss despite holding Los Angeles to three hits in his first career complete game. He had a rocky fifth inning, when Hunter hit a solo shot. The right-hander also hit Maicer Izturis and Gary Matthews Jr. with bases-loaded pitches.

That was enough for Saunders (8-1), who is emerging as a star after splitting the past two seasons with the Angels and Triple-A Salt Lake. He needed just 10 starts to match last year's win total and moved into a tie with Boston's Daisuke Matsuzaka for the American League lead in victories.

RANGERS 13, INDIANS 9: At Cleveland, Jarrod Saltalamacchia hit his first career grand slam to help Texas beat Cleveland as the Indians lost their seventh in a row and pitcher Fausto Carmona to injury. Cleveland also lost an apparent three-run homer by Ben Francisco. The play was ruled an RBI double, the latest in a string of home run calls botched by big league umpires recently.

ATHLETICS 8, RED SOX 3: At Oakland, Calif., Frank Thomas hit a two-run homer to stake Rich Harden to an early lead and Mark Ellis added a three-run shot in Oakland's win that snapped Boston's seven-game winning streak. Harden (3-0) didn't allow a hit until Dustin Pedroia's solo homer with one out in the fourth on the way to winning back-to-back starts.

Thomas hit the first pitch he saw from Tim Wakefield (3-3) in the third for his seventh home run, then Ellis hit his fourth homer of the year in the third.