PHOENIX -- The Arizona Diamondbacks have been pulling off comebacks all season, with seemingly a different player coming through each time.
This time, it was Eric Chavez's turn.
Stuck in a rut since coming off the disabled list, Chavez hit the first pitch he saw in the ninth inning for a run-scoring single, sending the Diamondbacks to another walk-off victory, 4-3 over the San Francisco Giants on Saturday night.
"We've been good at it, it's just not a fun way to play baseball," Chavez said. "We've played so many extra-inning games, you just don't want to play like that. But we are good late. I don't know what that means, but that was a good one."
Arizona has had a knack for walking away with wins this season and pulled off another one against the Giants.
After Brad Ziegler (8-1) worked a perfect ninth, Willie Bloomquist opened the bottom half with a single off Sandy Rosario (3-2) for his third hit and moved up on Adam Eaton's sacrifice bunt. After an intentional walk to Paul Goldschmidt, Chavez lined his single into left-center for his fifth career game-ending hit, sending the Diamondbacks rushing out of their dugout to greet him.
It was Arizona's 12th walk-off victory this season and 29th comeback win.
It may also be the trigger that gets Chavez back in the groove he was in before going on the DL Aug 10 with a strained left knee.
Hitting .299 before the injury, he had gone hitless in 12 at-bats since coming off the DL, including an 0-for-4 start against the Giants.
Chavez ended the streak in dramatic fashion, lining a high fastball to the opposite field.
"He came to me during (batting practice) and said, `My swing stinks right now, but I might come through in a big spot," Diamondbacks manager Kirk Gibson said. "He hung tough a got a good pitch."
San Francisco won the series opener 1-0 and rallied from a 3-0 deficit to tie the middle game.
Starter Ryan Vogelsong gave the Giants a chance with six effective innings, but the bullpen, which has been stellar let it slip away.
The run off Rosario was the second allowed by San Francisco's bullpen in 20 2/3 innings that past seven games.
"A hard fought game, the guys did well coming back," Giants manager Bruce Bochy said. "They got the leadoff hitter and that puts pressure on you."
Vogelsong had been sharp since coming off the disabled list for a broken right hand, going 3-1 with a 2.55 ERA.
But the right-hander has struggled his second time through the order all season and Saturday was no different.
Vogelsong escaped a bases-loaded jam in the third inning, but Arizona opened the fourth with three straight hits, the last a run-scoring single by Miguel Montero. Gerardo Parra followed with a sacrifice fly and Bloomquist made it 3-0 with a run-scoring single.
Opponents are hitting .349 against Vogelsong the second time through the order after the Diamondbacks went 5 for 6 with a walk and two sacrifices.
"In that one inning, I got a little loose mechanically and that had an effect on how sharp the pitches were," said Vogelsong, who allowed three runs on nine hits. "The rest of the game wasn't too bad."
He seemed to tire by the seventh inning, when Blanco hit his third pitch out to right for a homer and Marco Scutaro chased him with a run-scoring triple. Buster Posey tied the game at 3 later in the inning with a run-scoring single off Josh Collmenter.
Cahill yielded three runs and nine hits in 6 1/3 innings.
"I had some guys on base all night and had to make some big pitches, just probably trying to do a little too much there at the end," Cahill said.
Vogelsong singled in the fifth for his second hit in 24 at-bats this season. ... Arizona's Martin Prado is hitting .364 since the All-Star break after going 3 for 4. ... Giants CF Angel Pagan saved a run in the seventh with a diving catch on Aaron Hill's liner. ... Arizona LHP Patrick Corbin will pitch the series finale Sunday after allowing eight earned runs in 5 1/3 innings against Philadelphia in his last start. ... RHP Yusmeiro Petit will make his second start for the Giants on Sunday. He earned his first victory in the majors since 2009 by allowing two runs over six innings against Colorado in his first start this season.