Buster Posey and Brandon Crawford homered, Tim Hudson pitched into the ninth and the San Francisco Giants beat the Angels, 5-4, on Saturday.
Nori Aoki had two RBIs and Casey McGehee had three hits and drove in a run for the Giants, who won their fourth straight at home and eighth of 12 overall.
Albert Pujols and Mike Trout homered in the same game for the 20th time with the Angels, who have lost four of six.
Hudson (1-2) retired the first 10 batters he faced and gave up three runs, two hits and two walks in eight-plus innings. He struck out three.
Hudson walked Kole Calhoun in the fourth, and Calhoun was then caught stealing. Hudson also walked the last batter he faced, pinch-hitter Colin Cowgill to open the ninth.
Sergio Romo got two outs, including a strikeout of Pujols with two runners on. Jeremy Affeldt gave up an RBI single to Kole Calhoun, and Santiago Casilla allowed and RBI single to David Freese.
Casilla then got the last out for his seventh save when Matt Joyce's single hit pinch-runner Taylor Featherston between first and second.
Hector Santiago (2-2) allowed four runs on nine hits in his five innings of work.