Cole Hamels went the distance and the Phillies used two first-inning runs on the way to a 2-1 victory, expanding their season-best winning streak to nine games.
The teams were playing less than 24 hours after an ugly incident in the sixth inning Friday, when Philadelphia's Shane Victorino was hit by a Ramon Ramirez pitch in the back, sparking a benches-clearing shoving match and resulting in three ejections.
Hamels (13-6) provided the Phillies with yet another great mound effort, as the lefty came within one out of his first shutout of the season. That was prevented by Pablo Sandoval's home run. Orlando Cabrera grounded the next pitch to shortstop Jimmy Rollins, who fired to Ryan Howard to end the game.
Hunter Pence, who has at least one hit in all eight games since being acquired from Houston, had an RBI single.
Matt Cain (9-8) was the hard-luck loser, allowing three hits and fanning eight over eight innings, as San Francisco lost for the eighth time in nine games, but remained a half-game ahead of Arizona atop the NL West.
The Hamels-Cain matchup was a redux from Game 3 of last year's NLCS as well as July 27 this year with the Giants righty winning both of those encounters. But on this sunny day by the bay, Hamels was awesome by throwing 83 of his 114 pitches for strikes and not allowing a runner to advance past second base until Sandoval's blast to left field. At one point, Hamels threw 23 straight first-pitch strikes.
"I think that's something that we always stress is to get ahead of the hitter and to get the first-pitch strike," Hamels said. "When you're able to do that, you get a lot of quick outs. That's the key to pitch deep in the ball game and keep them off-balance. That's what I was able to do."
The pitching for the NL East leaders has been spectacular in this series. Cliff Lee tossed a shutout in the opener on Thursday, and Friday Vance Worley threw seven strong innings.
Roy Oswalt gets his shot on Sunday when he returns from a six-week stint on the disabled list due to lower back inflammation. With a victory on Sunday the Phillies would complete their first four-game sweep in San Francisco and first against the Giants since May 13-16, 1982 at Veterans Stadium. The last away four-game sweep by the Phils vs. the Giants came August 6-8, 1943 at the Polo Grounds in New York.
The defending World Series champions haven't helped themselves in this series, going 0-for-17 with runners in scoring position.
"You don't expect to score a lot when you face the Phillies staff, they're really good," Giants manager Bruce Bochy said. "As far as the hitting, you keep working because you have to. That's baseball."
Rollins doubled to right leading off the game and Chase Utley drew a one-out walk. With two down, Pence singled to right and Utley made it to third when Sandoval failed to catch the bouncing throw. Utley then scored when Eli Whiteside, one of the participants in Friday's fracas, couldn't handle a Cain pitch.
Hamels got Sandoval to hit into an inning-ending double play in the fourth, a frame the Giants started with consecutive singles from Aaron Rowand and Jeff Keppinger.
Whiteside and pinch-hitter Nate Schierholtz singled with two down in the eighth, but Rowand popped out in the infield.
The Phils have outscored their opponents, 54-24 during this winning streak, which is their longest since last year's 11-game run, September 12-24...The Phillies have won a season-best seven straight series on the road. Their last such series loss was, June 17-19 at Seattle...Cain is 1-4 in seven career regular season starts vs. Philadelphia...Phillies third baseman Placido Polanco left in the eighth inning due to left hip soreness...Hamels has allowed two earned runs or less in 13 of his last 14 starts. He was 0-2 with a 5.30 ERA over his previous three appearances against the Giants. His 13 wins eclipses his total from last year. Hamels' career-best for wins is 15, set in 2007...Giants reliever Sergio Romo set down the last two batters in the eighth. He's retired 31 straight batters...Hamels logged his second complete game of the year and ninth of his career.