Updated

San Francisco, CA (SportsNetwork.com) - Tony Campana plated the go-ahead run with a two-out single in the top of the 10th inning, as the Arizona Diamondbacks earned a 6-5 win over the San Francisco Giants on Thursday in the rubber match of a three-game set at AT&T Park.

Campana was credited with a career-high four hits on the night, including a single in the eighth that helped tie the game at 5-5. With runners on first and second and two away, Campana hit a slow roller to third that Pablo Sandoval fielded, but the third baseman's rushed throw to first sailed high, allowing Gerardo Parra to score from second to tie the game.

"That pressure play by Tony got it done in the eighth, got us the tying run," Arizona manager Kirk Gibson said of Campana's speed forcing Sandoval to rush his throw.

In the 10th, Cliff Pennington stroked a one-out single off Yusmeiro Petit (0-1) before swiping second with Campana at the plate two batters later. The speedy center fielder then slapped a single just over the head of second baseman Brandon Hicks and Pennington raced home for the deciding run.

Addison Reed retired the Giants in order in the bottom of the 10th to secure his third save of the season. J.J. Putz (1-0) picked up the win after spinning a perfect bottom of the ninth.

Pennington finished with three hits, two RBI and a run scored, while Miguel Montero registered two hits, two RBI and a run scored for the Diamondbacks, who have won three of their last four games.

Michael Morse supplied a pair of RBI, while Buster Posey and Brandon Crawford each collected two hits and an RBI for the Giants, who have dropped three of their last four games.

"It was a fight until the end," Morse remarked. "They wanted it as bad as we did. It was like a boxing match out there."

Despite Sandoval's error in the eighth, San Francisco appeared poised to tie things in the home half after loading the bases with one out, but Joe Thatcher induced consecutive fly outs from Brandon Belt and Sandoval to escape the jam.

The Giants finished 4-for-14 with runners in scoring position and left 10 men on base in the setback.

Early on, Pennington plated a pair of runs with a bases-loaded single in the second, but Hicks answered with a two-out single in the home half to score Hunter Pence, who doubled earlier in the frame.

Arizona added two more in the third on Montero's two-run double to right, but San Francisco answered again in the bottom of the frame after Posey put down a picture-perfect bunt with Angel Pagan standing on third with two away.

Montero popped out from behind the plate, fielded the ball and fired wildly to first. Posey and first baseman Paul Goldschmidt collided as the ball sailed past first base, allowing Pagan to score to bring the Giants within 4-2.

San Francisco sliced the margin to one when Morse and Crawford clubbed consecutive doubles to start the fourth before Morse's two-run double off the wall in right with two outs in the fifth gave the Giants a 5-4 lead.

Arizona, which went 6-for-20 with RISP, loaded the bases with no outs in the seventh, but Jean Machi induced a 1-2-3 double play from Martin Prado before Javier Lopez fanned Montero to end the inning.

Game Notes

Arizona starter Randall Delgado allowed three runs on six hits and three walks over 3 1/3 frames, while San Francisco starter Ryan Vogelsong struck out five and surrendered four runs on seven hits and a walk over five-plus innings ... The Giants lost a series against Arizona for the first time since April 22-24 of last season (5-0-1) ... Goldschmidt went 1-for-4 and reached base for the 31st straight game. It's the longest streak by a Diamondback since Eric Byrnes' 31-gamer from May 5-June 8, 2007.