PHOENIX -- Hunter Pence got the pitch he wanted from Trevor Cahill. He just happened to be standing on second base at the time.
Pence jump-started the San Francisco offense with two stolen bases and later homered, doubled and scored three runs as the Giants routed the Arizona Diamondbacks 10-5 on Saturday night.
"With two outs, I know he throws that heavy sinker and there's a lot of balls in the dirt," Pence said. "They really weren't holding me on and he was lifting his knee up. I really was trying to get to third to make it a little tougher on those sinkers in the dirt."
Pence single-handedly gave the Giants the lead in the second inning. After reaching on a fielder's choice, he stole second and third and scored when catcher Miguel Montero's throw bounced off the wrist of third baseman Martin Prado and caromed into left field.
"He's trying to live up to that name 'Full Throttle'," Giants manager Bruce Bochy said. "He's a guy everybody feeds off of. He's not afraid to push the envelope. He reads pitchers well and we've let him go."
It was the first time Pence had stolen two bases in the same game since May 27, 2010, at Milwaukee while he was with the Houston Astros.
"Let's just say I'm healthy," Pence said. "I've had two years of a tough situation."
Buster Posey also homered and Brandon Crawford had a career-high four hits for the Giants, who snapped a two-game losing streak and won for the third time in seven games.
"It was good to see our bats come to life," Bochy said.
Madison Bumgarner (5-4) pitched five innings, allowing three runs and five hits with a walk and four strikeouts. Two of the hits and the walk came to start the sixth inning, during which Arizona scored four runs against the left-hander and two relievers.
"We were using all pitches," Bumgarner said, "in and out, up and down."
Paul Goldschmidt extended his RBI streak to eight games for the Diamondbacks, who have lost two of three after a 4-1 stretch to start the month. Willie Bloomquist added an RBI double in the ninth.
Giants third baseman Pablo Sandoval, who had missed three of the last six games with a strained left foot, left after aggravating the injury in the top of the third. Bochy said he'll give Sandoval the day off on Sunday ahead of a scheduled off day on Monday.
San Francisco made it 2-0 later in the second inning when Andres Torres walked and scored on a double down the right-field line by Crawford, barely evading Montero's lunging tag.
The Giants put the game out of reach in the fourth, scoring six runs on six hits off Cahill, the last a towering three-run homer to left by Posey. Gregor Blanco and Pence added RBI doubles in the inning.
"It kind of happened quick," Cahill said. "I left a lot of balls up and when I got ahead and tried to put them away, I'd get it belt high and down the middle."
Cahill allowed eight runs on nine hits and a walk in 3 2/3 innings. He struck out four and hit a batter en route to his fourth loss in his past five decisions.
"He didn't have a lot of movement," Arizona manager Kirk Gibson said. "He really struggled throwing the ball on the corner today and they were swinging the bats good. They just beat on us."
NOTES: Posey entered the game in a 7-for-35 slide. His home run was only the Giants' second in their past eight games. ... Pence is perfect in 12 stolen-base attempts this season and has one fewer steal than in his past two seasons combined. ... Cahill's outing was his worst since giving up 10 runs in two innings against the New York Yankees for Oakland on July 22, 2011. ... Pence's double in the fourth was the 200th of his career. ... Sandoval singled in the third and is 4-for-8 in his past three games, but he remains in the midst of a larger 9-for-43 slump.