Tim Lincecum stayed sharp until getting hit in the right knee by Chase Utley's bounding bat and the San Francisco Giants ended Philadelphia's season-high nine-game winning streak, tagging Roy Oswalt and beating the Phillies 3-1 Sunday.
Jeff Keppinger had four hits as the Giants spoiled Oswalt's return from the disabled list. San Francisco avoided a four-game sweep in a matchup of NL division leaders.
Lincecum (10-9) went down in the eighth inning when Utley accidentally lost his grip and the bat skittered toward the mound. Utley went out to check on Lincecum, who handed back the bat, walked it off and stayed in the game. Utley then hit a one-out single.
Utley's act of sportsmanship was a far cry from the bench-clearing brawl between the clubs Friday night.
Lincecum left later in the eighth after Hunter Pence reached with two outs on first baseman Aubrey Huff's error. Javier Lopez relieved and retired Raul Ibanez on a fly ball.
Brian Wilson finished for his 34th save in 38 chances, closing out the Giants' second win in 10 games.
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 Philly from July 26-28.
Lincecum allowed seven hits and one run, struck out five and walked one in 7 2-3 innings. The two-time NL Cy Young Award winner and four-time All-Star beat the Phillies for the second time in three starts.
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.
Oswalt (4-7), facing Lincecum in their seventh career regular-season meeting, gave up a season-high 12 hits in his first start since June 23. The right-hander missed 37 games with lower back inflammation. He is 1-7 since beginning the year 3-0.
Phillies slugger Ryan Howard went 1 for 12 with eight strikeouts in the series and was 3 for 24 in seven games against the Giants this year. He struck out 12 times in 22 at-bats last October when San Francisco beat Philadelphia in the six-game NL championship series.
Orlando Cabrera hit a go-ahead sacrifice fly in the fifth and Keppinger added one of his own in the sixth.
The Giants produced 13 hits and avoided their first four-game sweep by the Phillies since losing in Philly from May 13-16, 1982 _ and at home since Aug. 6-8, 1943, while playing in New York.
Chris Stewart added a pair of singles and an RBI and Pablo Sandoval had two hits for San Francisco, which loaded the bases against Oswalt in the fourth. Stewart delivered a single up the middle to tie the game at 1. The Giants finally made the most of some chances after going hitless in their first 18 at-bats of the series with runners in scoring position.
Huff's fourth-inning bloop single two batters ahead of Stewart ended an 0-for-22 stretch overall with runners in scoring position.
New Giants star Carlos Beltran was booed when he hit into an inning-ending double play in the first. But Phillies center fielder Shane Victorino, in the middle of the skirmish Friday, got it worse from the sellout crowd of 42,366 _ and fans jumped to their feet and roared when he struck out looking in the third.
Phillies catcher Carlos Ruiz took a third-inning foul tip by Lincecum in the facemask but stayed in the game after being examined by trainers. He had two hits.
Fan, follow and download: Get the latest from NBCPhiladelphia.com anytime, anywhere. Follow us on Twitter, Facebook and NBC Philadelphia. Sign up for our sports newsletter. And, get breaking news delivered right to your mobile phone -- just text PHIBREAKING to 639710 to sign up. (Message and data rates may apply.)