PHOENIX -- A grueling road trip has turned into a joyride for the San Francisco Giants.
Bengie Molina homered and drove in three runs, Brian Wilson struck out the side for his seventh straight save, and the Giants defeated the error-prone Arizona Diamondbacks 6-4 on Wednesday night to improve to 6-3 on a three-city tour.
The Giants started the trip in Washington, where rain forced a doubleheader, and then moved on to Florida. After being shut out Monday night by the Marlins, the Giants flew overnight to the desert, and now they're one win away from a sweep of the Diamondbacks.
It's a dramatic turnaround for a team that lost its first six road games and is still only 13-18 away from the Bay Area.
"We knew we had to turn it around if we're going to have a successful season," manager Bruce Bochy said. "We've definitely played better on the road. This has been a tough road trip, with the travel and the rain delays, and we keep bouncing back."
Molina hit a two-run homer -- his team-high ninth and first since May 12 -- as the Giants took a 5-1 lead against Doug Davis (3-7) in the third. The Giants' free-swinging catcher added an RBI single in the ninth.
Wilson struck out the top of the Diamondbacks' order -- Felipe Lopez, Ryan Roberts and Justin Upton -- to record his 16th save in 19 chances and lock up the victory for Barry Zito (3-6), who went five shaky innings.
Zito gave up four runs and seven hits, walking four and striking out six.
"That was a poor outing by me," Zito said. "The team picked me up huge on all sides."
Bochy said he was tempted to lift his struggling pitcher one out short of qualifying for the victory.
"He was testing me, there's no getting around it," Bochy said.
With the bases loaded and two out, Bochy decided that pinch-hitter Miguel Montero, a lefty, would be Zito's last hitter. Montero hit a deep but foul drive to right field that Randy Winn pulled in near the wall.
"He's so underrated as a player, especially defensively," Bochy said of Winn. "He should have a Gold Glove."
Winn's grab provided a stark contrast to another abysmal fielding effort by the Diamondbacks, who followed up Tuesday night's three-error game with three more errors. Two of the blunders were costly.
"We just beat ourselves in that inning," Arizona manager A.J. Hinch said.
In the third, center fielder Chris Young was charged with an error after making a long run to chase down Andres Torres' drive to deep center field. Two runs scored on the play, giving San Francisco a 5-1 lead.
But Zito, who is working on a $126-million, seven-year contract, gave most of the lead back in the fifth on five straight hits, including an RBI single by Upton and a two-run double by Stephen Drew.
Still, the Diamondbacks came up short, a recurring theme this year, especially in Chase Field. The Diamondbacks have dropped eight of 11 home series, and four of five under Hinch, who replaced Bob Melvin on May 8.
"Right now, we're stuck in this cycle of having to be perfect in order to get through a game and feel good about it," Hinch said. "It's obviously a bad cycle to be in as a team, and we're going to work to get out of it."
Davis went four innings, his shortest outing. He gave up five runs and six hits, walking three and striking out one.
"Didn't feel like I had anything out there," Davis said. "I felt like every time I threw something, they got a piece of it."
Arizona OF Conor Jackson, who has been out since May 12 with pneumonia, took batting practice before the game but is "not even close" to returning, manager A.J. Hinch said. ... Arizona 1B Tony Clark, who has missed more than a month with a sprained right hand ligament, will begin a minor league rehab assignment on Thursday. ... Arizona honored former Diamondback Randy Johnson, who won his 300th career victory last week, with a brief video tribute after the third inning. The Big Unit stood in the dugout and tipped his cap to acknowledge a standing ovation.