Matt Cain gave up three hits in six innings and singled in a pair of runs to help the San Francisco Giants end a nine-game losing streak against Arizona with a 5-2 victory over the Diamondbacks on Saturday night.
Cain (2-2) allowed a run, struck out eight, walked two and hit a batter in his first victory in five outings. Trevor Cahill (2-4) took the loss as the Diamondbacks were beaten for the sixth time in seven games.
Cain singled twice. His second brought in two runs after Cahill had hit consecutive batters with two outs in the sixth. Cahill allowed four runs on five hits in 5 2-3 innings.
Santiago Casilla pitched a scoreless ninth for his seventh save in eight tries.
San Franciso beat Arizona for the first time since last Sept. 3.
Melky Cabrera extended his hitting streak to 10 games with a single and pair of RBI doubles. Angel Pagan went 3 for 3 with a double and a walk for the Giants.
Cabrera's RBI double gave San Francisco the lead for good 2-1 in the fifth. Cain started the inning with a single, then Gregor Blanco reached on a fielder's choice. Blanco stole second before Cabrera's double down the right field line brought him home.
In the sixth, Pagan's leadoff single was erased with a double play, but Cahill hit Manny Burriss and Brandon Crawford — the seventh and eighth batters in the order — to bring up Cain, whose single to right ended the Arizona starter's night. Cahill entered the game with a 3-0 record and 1.20 ERA in four career starts against San Francisco.
For the second time in as many nights, the Giants scored in the first inning. Blanco led off with a walk on four pitches, then raced from first to third when Cahill threw wildly on a pickoff attempt. Brandon Belt's groundout brought Blanco home.
Aaron Hill, coming off a 0-for-5 performance in the series opener Friday, tripled past the diving Blanco in right to start the third and scored on Bloomquist's sacrifice fly to right, tying it 1-1.
San Francisco loaded the bases with one out in the seventh, thanks in part to third baseman Ryan Roberts' fielding error, but Joaquin Arias bounced into a forceout at home, then reliever Craig Breslow struck out Burriss looking.
The Diamondbacks cut it to 4-2 in the seventh thanks to the shortstop Crawford's eighth error of the season and second in as many nights. Jason Kubel doubled with one out and took third when the left fielder Cabrera threw wild to second. After two outs, pinch hitter Paul Goldschmidt grounded to Crawford, whose throwing error allowed Kubel to score.
The Giants added a run in the ninth when Belt led off with a triple and scored on Cabrera's double.
The third baseman Arias robbed Ryan Roberts with a slick fielding play to end the eighth.
Notes: Cain was in line to win his previous start against Milwaukee with a 3-2 lead entering the ninth but Giants closer Santiago Casilla blew his first save of the season and the Brewers won 4-3 in 11. ... The Chase Field roof was closed when the game began but was opened after four innings. ... The Giants entered the game hitting .207 with runners in scoring position, second-worst in the majors behind Miami's .199. ... Cain's only other win this season came in his second start, a complete game 5-0 win over Pittsburgh on April 13, when he struck out 11 and walked none. ... Barry Zito (1-1, 2.21 ERA) starts for San Francisco in the series finale on Sunday while the Diamondbacks go with Joe Saunders (2-2, 2.50). ... The Giants lead the majors in errors with 37.