Sonny Gray continued his ascent toward the top of the A's starting rotation while allowing just three hits in 5 2/3 innings. But his defense betrayed him in the fourth.
With one out, Hunter Pence reached base safely as first baseman Brandon Moss couldn't hold onto third baseman Josh Donaldson's low throw and was charged with an error -- one of three the A's committed. Gray retired Michael Morse on a called third strike before Hector Sanchez's single prolonged the inning. Up came Joaquin Arias, who bounced Gray's 1-0 pitch up the middle for an RBI single.
Yusmeiro Petit and David Huff sustained their competition for a long-relief role with the Giants. Petit started and lasted four innings, permitting two hits while striking out seven. Huff followed with three no-hit innings. It was the longest spring outing for both pitchers.
Derek Law pitched a perfect eighth inning for the Giants before closer Sergio Romo followed with a flawless ninth.
In the eighth, Gregor Blanco's RBI triple helped give the Giants some insurance. Brandon Crawford drove in Blanco with a sac fly for the game's final run.
Up next: Scott Kazmir, scratched from his last start with minor triceps tightness, returns to the mound Saturday to face the Mariners at Phoenix Municipal Stadium for a 1:05 PT start. The lefty has pitched in just two Cactus League games this spring but impressed in both, combining for seven scoreless innings with one walk and five strikeouts. Kazmir is in line to pitch behind Gray, the projected Opening Day starter, when the season begins.
Chris Haft is a reporter for MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.