SAN FRANCISCO – Matt Cain is receiving little run support lately. Problem is, he's used to that.
Cain allowed just three hits over eight innings, but that was enough for Cole Hamels and the streaking Philadelphia Phillies to beat the San Francisco Giants 2-1 on Saturday.
Pablo Sandoval homered with two outs in the ninth to provide the only offense for the Giants, who have dropped eight of nine games since taking two of three in a series at Philadelphia.
Cain (9-8) has received the worst run support in the majors (3.88 runs per game) since his first full season in 2006.
"As a staff, when your team is in a rut, you just go out and keep doing what you're doing," Cain said. "We've been playing close games all year, so this is nothing new. The guys are fine. They'll push through this."
The Giants are averaging the fewest runs in baseball (3.00) since the All-Star break and have scored two or fewer in 12 of their last 16 games.
"You come out and keep working at it," manager Bruce Bochy said. "You have no choice. You have to figure out a way to win these games. You don't expect to score a lot of runs against a staff like that. What is important is how you deal with it."
Hamels pitched a seven-hitter for his first win in two weeks and the Phillies made a pair of first-inning runs hold up, extending their season-high winning streak to nine games.
Hamels (13-6) took a shutout into the ninth before Sandoval's homer. He struck out five and faced five batters more than the minimum while dominating the defending World Series champs.
"He outpitched me. I have to give him the credit," Cain said. "It seemed like he threw 22 or 23 consecutive first-pitch strikes and they were quality pitches. We were in a hole right away, 0-1, and he went from there."
Hamels had only one victory in his previous four starts and lost to San Francisco 2-1 on July 27 despite pitching into the eighth inning and allowing just two runs and six hits.
Hamels was even stronger in the rematch and got better results.
"Cain and Hamels have matched up two or three times now and it's always an exciting game," Phillies slugger Ryan Howard said. "After we got to Cain early, he was tough."
Hamels, who hadn't won since July 22, faced the minimum through three innings, then gave up back-to-back singles in the fourth. He quickly worked out of the jam, striking out Carlos Beltran on three pitches before Sandoval grounded into a 4-6-3 double play in the first pitch.
San Francisco didn't get another runner until the seventh, and had two on with two outs in the eighth but failed to score each time.
The Giants, blanked by Cliff Lee in the series opener, are hitless in 17 at-bats with runners in scoring position in the three games against the Phillies this weekend. Over its last 16 games, San Francisco is batting .157 (16 for 102) with runners in scoring position.
Cain nearly matched Hamels, retiring 20 of the final 22 batters he faced after giving up both Philadelphia runs in the first. The right-hander struck out eight and walked two.
Jimmy Rollins doubled high off the wall in right-center leading off the game, and after Chase Utley drew a one-out walk and Howard struck out, Hunter Pence hit a bloop single to right to drive in Rollins.
Utley tried to take third on the play and appeared to be out following a strong throw by Nate Schierholtz, but Sandoval bobbled the ball, allowing Utley to reach safely. Three pitches later he scored on a passed ball to make it 2-0.
Notes: Friday's winning pitcher, Vance Worley, is the first Phillies rookie to win six games over a seven-game stretch since Bob Walk in 1980. ... Phillies 3B Placido Polanco left the game with soreness in his left hip. ... Philadelphia has an NL-best 28-11 record during day games. ... Giants reliever Sergio Romo has retired 30 consecutive batters, the longest streak in the majors. ... Philadelphia homered in its previous eight games, the team's longest streak since 2009. ... RHP Tim Lincecum (9-9) has six straight quality starts against the Phillies and will try to stop the Giants' slide when he opposes RHP Roy Oswalt (4-6) in Sunday's series finale. Oswalt will be making his first start since going on the disabled list with lower back inflammation on June 24.