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: Though manager Bruce Bochy said that Buster Posey soon will start a game at first base, the two-time All-Star catcher will be behind the plate Saturday when the Giants visit the White Sox in Glendale, Ariz. Posey will continue acquainting himself with new batterymate Tim Hudson, who has allowed seven runs in 8 1/3 innings over his previous two starts. Watch the action live at 1:05 PT on MLB.TV.
Chris Haft is a reporter for MLB.com. Read his blog, Haft-Baked Ideas, and follow him on Twitter at @sfgiantsbeat. This story was not subject to the approval of Major League Baseball or its clubs.