SAN FRANCISCO -- Brandon McCarthy posted his first career road win in California on Saturday night, limiting the San Francisco Giants to six hits in eight innings in the Arizona Diamondbacks' 2-1 victory at AT&T Park.
The eight-year veteran gave up a third-inning run but then shut down the Giants until handing over the ball to Brad Ziegler, who notched his ninth save of the season with a perfect ninth inning.
The win, Arizona's second in three games in San Francisco this week, allowed the Diamondbacks to remain 8 1/2 games behind Cincinnati in the National League wild-card race.
Paul Goldschmidt had three hits, including a fifth-inning RBI triple against Giants starter Matt Cain that broke a 1-1 tie, as the Diamondbacks picked up their major-league-best 31st one-run win of the season.
Pitching for the first time at AT&T Park, McCarthy entered the game never having won on the road against the Giants, A's, Dodgers, Angels or Padres. In stints with the White Sox, Rangers, A's and Diamondbacks, the 30-year-old had been 0-6 with a 6.14 ERA in 11 previous California appearances.
Actually, McCarthy (4-9) had trouble winning anywhere on the road recently. His last win away from Arizona's Chase Field had been May 18 at Miami, after which he had gone 0-4 with an 11.40 ERA before taking the mound in San Francisco.
The second-year Diamondback struck out six and walked one, his 76th consecutive start with three or fewer walks.
Cain (8-9) was making his return to the mound after having been nailed by a line drive on the right forearm on Aug. 22 against Pittsburgh. He was activated from the disabled list before the game.
Cain returned to his post-All-Star Game form, pitching into the seventh inning for the sixth time in his last seven starts. He was pulled after giving up a one-out walk to Adam Eaton in the seventh, having allowed two runs and eight hits in 6 1/3 innings. He struck out three and walked four.
The Giants' bullpen escaped jams in each of the final two innings, holding the Diamondbacks without a run in the eighth only after shortstop Brandon Crawford threw out Wil Nieves at the plate as he attempted to score on a Gerardo Parra double.
Diamondbacks shortstop Chris Owings, who wrapped up Pacific Coast League Most Valuable Player honors last week, had his first major-league hit with a sixth-inning single against Cain. Owings had been 0-for-6 with a walk since his promotion from Triple-A Reno on Monday.
The 22-year-old prospect added a second single off Giants reliever Heath Hembree in the ninth and had his first stolen base.
The Diamondbacks outhit the Giants 10-6.
Goldschmidt's second and third hits of the night contributed to Arizona's first two runs.
After the Giants had scored first on a Marco Scutaro RBI single in the third inning, the Diamondbacks quickly got even on Parra's fourth-inning single that scored Goldschmidt.
The slugging first baseman delivered his 28th career RBI against the Giants in the fifth, booming a triple to the base of the 421-foot marker in right-center field. Adam Eaton raced home from first on the play for a 2-1 lead.
NOTES: Arizona began the day with 40 wins after trailing at some point in the game, the third-highest figure in the majors. ... Diamondbacks 2B/3B/LF Martin Prado was a late scratch from the starting lineup after informing manager Kirk Gibson he felt ill about an hour before the game. Prado, the reigning National League player of the month, had started 11 consecutive games, hitting safely in nine of them. ... Arizona SS Didi Gregorius complained of dizziness at the ballpark and was held out of the starting lineup for a fourth consecutive game. ... Seeing a pitcher lose a perfect game on the 27th batter -- as Giants RHP Yusmeiro Petit did Friday night -- was nothing new to San Francisco first base coach Roberto Kelly. He denied Toronto RHP Dave Stieb a perfect game with a two-out, ninth-inning single on Aug. 4, 1989.