SAN FRANCISCO (AP) -- The Arizona Diamondbacks are determined to do a lot of things better in the second half. They realize they have no choice if they're going to stay in first place in the NL West.
On Sunday, they got a start at finding a groove again.
Paul Goldschmidt hit a sacrifice fly and a double against All-Star Madison Bumgarner, Cody Ross added a late two-run single, and the first-place D-backs held off the San Francisco Giants for a 3-1 win to avoid a three-game sweep.
''It wasn't a very good game on our part at all,'' Ross said. ''We made some mental mistakes. We're a better ballclub than that, but we overcame that. This isn't the short road trip we wanted.''
The D-backs snapped a three-game losing streak with their first victory of the second half, holding onto a slim half-game lead over the Dodgers.
Randall Delgado (2-3) won in his first career start at AT&T Park, and Goldschmidt's first-inning sac fly got things going against the inconsistent defending World Series champions. Arizona shortstop Cliff Pennington threw out Buster Posey at the plate in the sixth on a pretty relay throw, and third-base coach Tim Flannery claimed responsibility for the loss for sending the reigning NL MVP.
''I feel terrible and responsible for not getting Bum the win,'' Flannery said. ''With nobody out, that can't happen.''
A day after stranding 13 baserunners and going 2 for 12 with runners in scoring position, the D-backs did just enough against Bumgarner in the 10-game winner's first outing after the All-Star break.
Ross singled in the eighth as Arizona won for just the fourth time in 16 road games.
The D-backs bounced back in the series finale to avoid their second sweep of the season against the Giants and first in San Francisco's waterfront ballpark since May 10-12, 2011.
''We lost the first two games here. You want to stop that as soon as possible,'' Ross said. ''Delgado was a stopper today.''
Goldschmidt, 1 for 9 in the first two games of the series, doubled to start the fourth and drew walks in the sixth and eighth innings. Delgado allowed three hits, struck out two and walked four in 5 2-3 innings.
Brad Ziegler finished a crazy ninth that featured two errors for his fourth save in as many tries. The Giants scored on second baseman Aaron Hill's wild throw past first.
''We're in it for the long haul,'' D-backs manager Kirk Gibson said. ''We understand there are going to be a lot of frustrations along the way and we need to play better. We're capable of playing better, cleaner baseball.''
San Francisco took the first two games of the series, but the NL West-leading Diamondbacks (51-17) gained a game back to give themselves a 5 1/2-game cushion over San Francisco and remain a half-game ahead of second-place Los Angeles.
Bumgarner (10-6), who didn't pitch for NL All-Star manager Bruce Bochy in Tuesday's loss at Citi Field, had his three-start winning streak snapped with just his second loss in eight starts. He allowed five hits, struck out six and walked three over seven innings in his 20th start of 2013.
''He threw the ball well. He battled through some innings,'' Posey said. ''It's tough when you can't pick up a good outing like that.''
The Giants turned a nifty double play to end the fifth. First baseman Brandon Belt caught A.J. Pollock's foul popup and threw to Bumgarner covering first for a double play. A running Pennington, aboard on a leadoff single, was faked out at second when Marco Scutaro threw down his glove as if to tag Pennington - with Pennington realizing too late that the ball wasn't there as he made his slide.
Arizona was swept in a three-game series the previous two times it opened the second half on the road, at Wrigley Field against the Cubs last year and at San Diego in 2010.
''Today we were back to normal,'' third baseman Martin Prado said. ''Not just because we won but the environment. Everyone was sticking together. From now on, we're going to get back to the baseball we were playing in the first half.''
Notes: SS Brandon Crawford returned to the Giants' starting lineup after coming off the bench Saturday, a day after he had his left foot spiked by Heath Bell on a play at first base. ... Bumgarner lost for just the third time in 13 starts vs. the NL West. ... On Aug. 16, 2011, against the Giants in his second big league start while with Atlanta, Delgado carried a no-hitter into the seventh inning before now-Arizona teammate Ross' solo home run. ... The Giants placed LHP Jeremy Affeldt on the DL a day after he strained his left groin. He could miss up to six weeks. RHP Jean Machi was recalled from Triple-A Fresno to fill his spot. ... San Francisco RHP Ryan Vogelsong, recovering from two broken bones in his right pinkie, will pitch his first rehab outing in the Arizona Rookie League on Tuesday - likely two innings and about 35 pitches. ... The Giants used 16 relievers in the series.