SAN FRANCISCO — Buster Posey hit a two-run homer and Matt Cain bounced back from two rough starts to earn his first win in more than a month as the Giants beat the first-place Arizona Diamondbacks 4-3 on Saturday for a second straight night.
Posey connected for his 14th homer in the fifth inning. Cain (6-6) allowed two runs in five-plus innings after failing to make it out of the third inning his last two starts to win for the first time since June 13 at Pittsburgh.
With wins in the first two games out of the All-Star break, the World Series champion Giants have cut their deficit in the NL West to 41/2; games behind Arizona. The Diamondbacks' lead over the Los Angeles Dodgers fell to a half-game as Wade Miley (6-8) lasted just four innings.
Reds 5, Pirates 4
At Cincinnati, Joey Votto drove in a pair of runs, and Shin-Soo Choo extended his hitting streak to a career-high 14 games on Saturday, leading the Cincinnati Reds to a win.
Mets 5, Phillies 4
At New York, Gonzalez Germen came out of the bullpen to bail out fellow rookie Zack Wheeler and help the New York Mets hold off Philadelphia.
Brewers 6, Marlins 0
At Milwaukee, Yovani Gallardo carried a shutout into the seventh inning, and Jonathan Lucroy and Rickie Weeks belted home runs, leading Milwaukee over Miami.
Rockies 9, Cubs 3
At Denver, Carlos Gonzalez homered and Todd Helton had three of the Rockies' 13 hits in a win over the Cubs.
Troy Tulowitzki, Dexter Fowler and Wilin Rosario had two hits each for a Colorado offense that had scored eight runs in its previous five games.
Dodgers 3, Nationals 1,10 innings
At Washington, Hanley Ramirez doubled to highlight a two-run 10th inning, and the Dodgers used seven pitchers to again tame the tepid offense of the Nationals.
Adrian Gonzalez led off the 10th with a double off Craig Stammen (5-5). Ramirez followed immediately with an RBI double for his third hit of the night, then scored two batters later on Andre Ethier's sacrifice fly.
Padres 5, Cardinals 3
At St. Louis, Edinson Volquez was bailed out by his bullpen and earned the victory in San Diego's win over the Cardinals.
Royals 6, Tigers 5
At Kansas City, Mo., Salvador Perez drove in three runs and Mike Moustakas went 3 for 4 with a game-winning home run to lead the Kansas City Royals to a victory over the Detroit Tigers and Justin Verlander.
Verlander (10-7) had not lost to the Royals since Sept. 9, 2009, but gave up six runs, five earned, on eight hits and four walks in 52/3 innings. It was the seventh time in 21 starts that Verlander failed to make it into the sixth inning.
Ashland native Jeremy Guthrie (9-7) picked up the victory, surrendering five runs on 10 hits and two walks in six innings.
Mariners 4, Astros 2
At Houston, Michael Saunders got Seattle's only hit with a two RBI double with two outs in the seventh inning to lift the Mariners to a 4-2 win over the Houston Astros on Saturday night.
Erik Bedard (3-7) pitched 61/3 innings of no-hit ball before he was replaced by Jose Cisnero, who walked Mike Zunino with two outs before the double by Saunders put Seattle ahead 4-2.
Yankees 5, Red Sox 2
At Boston, Brett Gardner and Lyle Overbay each had three hits and drove in a run to back Hiroki Kuroda's seven strong innings, carrying New York Yankees past Boston.
Mike Carp had three hits and scored a run for the Red Sox. It was just Boston's second loss in its last 11 games in Fenway Park.
Angels 2, Athletics 0
At Anaheim, Calif., C.J. Wilson outpitched Dan Straily, retiring 18 consecutive batters at one point, and Alberto Callaspo homered to help Los Angeles beat Oakland.
Wilson (10-6) gave up three hits in 81/3 innings. He struck out eight and walked two. Jed Lowrie's two-out double in the first and Nate Freiman's leadoff single in the second were the only hits off the left-hander until Lowrie's one-out single in the ninth on Wilson's 119th and final pitch. Wilson began his string of consecutive outs with three straight strikeouts on 10 pitches and didn't allow another baserunner until he walked Derek Norris on a full count leading off the eighth.
Rays 4, Blue Jays 3
At Toronto, Jeremy Hellickson won his fifth straight decision, Desmond Jennings reached base four times and Tampa Bay beat the Toronto for its 16th win in 18 games.
Orioles 7, Rangers 4
At Arlington, Texas, Adam Jones homered, every Baltimore starter had a hit, and Miguel Gonzalez pitched another solid game on the road in the victory over sliding Texas.
Twins 3, Indians 2
At Minneapolis, Kevin Correia threw six sharp innings for his first win in a month, Joe Mauer and Justin Morneau each had two hits and a walk, and Minnesota beat Cleveland for its fourth-straight win.
White Sox 10, Braves 6
At Chicago, Alex Rios hit a grand slam and drove in five runs, and Jake Peavy pitched six solid innings in his return from the disabled list to lead Chicago over Atlanta.