SAN FRANCISCO -- Jimmy Rollins had two triples and drove in two runs and Philadelphia starter Adam Eaton beat San Francisco for the first time in nearly six years in the Phillies' 9-7 victory over the Giants on Thursday night.

Shane Victorino and Chase Utley both drove in two runs for the Phillies, who beat San Francisco for the 11th time in their last 13 meetings.

Giants starter Matt Cain, who entered the game with the NL's third-best ERA (1.54), didn't make it out of the fourth inning as the Giants lost for the fifth time in seven games.

Rollins, a native of Oakland, provided a rare show for his local fans. The shortstop, tied with Barry Bonds with nine home runs this season, entered the game with a career .188 average and one triple in San Francisco.

After striking out in his first at-bat, Rollins put the Phillies on the board with a two-run triple in the second that hit off the center-field fence and sparked a four-run rally. He led off the fourth with a triple that hit halfway up the right-field screen and started a five-run outburst.

Eaton (3-2) allowed six runs and eight hits over five-plus innings but still managed to beat the Giants for the first time since June 7, 2001, when he was with San Diego. He was 0-4 in 10 starts against San Francisco until Thursday.

Eaton walked three and struck out five.

Cain (1-2) lasted three-plus innings, the shortest start of his career. He allowed seven earned runs, matching his career high, eight hits and four walks.

Cain's ERA rose to 3.08 as he allowed more runs Thursday than in his previous five starts (six) combined.

Pat Burrell, Abraham Nunez and Carlos Ruiz also drove in runs for the Phillies.

The Giants had all but conceded the game, replacing Bonds, Rich Aurilia and Bengie Molina after five innings. Their replacements helped make it interesting with a five-run sixth against Eaton and Ryan Madsen.

Omar Vizquel delivered a two-run double and Randy Winn doubled in a run while backup catcher Eliezer Alfonzo tripled in a run and backup infielder Kevin Frandsen, recalled from the minors earlier Thursday, drove in a run.

Madsen got five outs and Antonio Alfonseca recorded four outs to get to Brett Myers, who pitched the ninth for his first career save.<

Notes: Vizquel batted in the eighth spot, the first time he hasn't batted first or second since June 14, 2001, when he hit eighth for Cleveland. ... Burrell broke an 0-for-19 streak with his fourth-inning double. ... Phillies 1B Ryan Howard took over the major league lead with his 27th walk. ... Phillies OF Aaron Rowand reached base safely for the 24th consecutive game.