PHOENIX -- Doug Davis appears to be running out of gas.
The Arizona Diamondbacks aren't.
Mark Reynolds added three hits and two RBI for the Diamondbacks, who stayed one game ahead of San Diego in the NL West.
There was plenty of drama in the ninth. The Padres' comeback victory over Pittsburgh flashed on the out-of-town scoreboard as Arizona closer Jose Valverde pitched out of a jam of his own making.
Arizona manager Bob Melvin said he knew the Padres had won but was more concerned about what was happening on the field.
"I'm sure everybody was talking about it," Melvin said. "I wasn't particularly focused on that. We were just trying to win our game."
Valverde gave up singles to Nate Schierholtz and Rajai Davis to open the ninth. But he got Bengie Molina to fly to center with runners on second and third to pick up his major league-leading 46th save in 53 chances.
Davis has been a stalwart in Arizona's rotation in the second half of the season, but he has failed to go five innings in his last three starts.
On Tuesday night he gave up four runs and nine hits in 4 2/3 innings. He walked one and struck out seven.
"It was a poor outing," Davis said. "My teammates picked me up. We won the ballgame. That's all that matters in the end."
Juan Cruz (6-1) earned the victory by striking out the only batter he faced in the fifth, when he relieved Davis with two out and two on. Cruz was among five relievers who shut out San Francisco over the final 4 1/3 innings.
"The bullpen picked us up, big-time," Melvin said.
Fortunately for Arizona, San Francisco's Barry Zito was even worse than Davis. Zito (9-13) allowed five runs and was lifted after the first four men reached in the fifth inning.
Davis pitched out of trouble from the start. With one out in the first, Frandsen doubled and scored on Winn's homer to left-center.
Arizona pulled to 2-1 in the first on Jackson's 14th homer.
In the third, the first two Giants singled before Davis struck out Winn, Molina and Scott McClain in order.
"We had a golden opportunity," San Francisco manager Bruce Bochy said. "We had the heart of our order up with nobody out and Davis got out of it with three strikeouts. That probably was the turning point in the game there."
Indeed, Arizona took a 3-2 lead in the bottom of the inning as Reynolds singled home a run and Zito walked Snyder to force in a run.
The Giants chased Davis in the fifth on an RBI double by Frandsen and an RBI single by Winn.
San Francisco's lead lasted a half-inning. Zito was gone after the first four batters in the fifth reached.
"You can't go out there and give up momentum like that," Zito said. "When you score runs, you've got to get out and shut down, and that's not what happened tonight."
Jackson walked, Reynolds singled, Chris Young singled and Snyder doubled home two runs to make it 5-4.
Snyder, who was hitting .219 at the All-Star break, has become one of the more reliable bats on the NL's weakest-hitting club. He's 5-for-7 lifetime against Zito.
"It's just going up there feeling more confident," said Snyder, who tinkered with his swing in midseason.
Zito allowed five runs on nine hits in four-plus innings. He walked four and struck out one. Thirteen of the 24 batters he faced reached base.
It was another awful outing in a disappointing season for Zito, who signed a pitcher-record $126 million, seven-year deal last winter. Zito hasn't won since Aug. 17, and he's 3-8 since June 4.
"I just didn't have much out there tonight," Zito said. "Instead of being loose out there, I was trying to be too fine."
- San Francisco 1B Scott McClain, who made his major league debut with Tampa Bay in 1998, made his eighth career start.
- Winn went 4-for-10 in the three-game series and batted .344 (11-for-32) at Chase Field with three homers and eight RBI this season.
- Arizona won the season series 10-8. The Diamondbacks haven't won the season series from the Giants since 2001.