SAN FRANCISCO — Tim Lincecum’s right knee still throbbing, Chase Utley hustled out toward the mound to apologize that his bat had struck the pitcher.
A tense four-game series featuring a benches-clearing brawl between National League division leaders ended with an act of sportsmanship.
Lincecum (10-9) stayed sharp until Utley accidentally lost his grip, and the Giants ended the Philadelphia Phillies’ season-high nine-game winning streak, tagging Roy Oswalt in a 3-1 win Sunday.
Jeff Keppinger had four hits as the Giants spoiled Oswalt’s return from the disabled list and avoided a four-game sweep.
The Giants had lost eight of nine coming into Sunday’s game.
“That was one of the biggest games of the year, really,” Giants first baseman Aubrey Huff said. “Four-game sweeps are tough to deal with, especially in your home yard.”
Brian Wilson finished for his 34th save in 38 chances, closing out the Giants’ second win in 10 games.
New Giants star Carlos Beltran left after the seventh. He felt a sharp pain in the top of his right hand on a swinging strikeout to end the sixth.
X-rays were negative and Beltran was expected to play tonight against Pittsburgh.
The NL East-leading Phillies, with the majors’ best record at 74-40, hadn’t lost since dropping two of three to the Giants in Philadelphia from July 26-28.
It was a timely performance for the reigning World Series champions, who have been struggling to score enough runs for their talented pitching staff. San Francisco held its half-game lead on Arizona in the NL West after the Diamondbacks beat the Dodgers.