Giants 5, Angels 3: Ryan Theriot had a pair of RBI singles and Matt Cain won his eighth straight start as visiting San Francisco edged Los Angeles.
Brandon Crawford ripped a two-run triple, Melky Cabrera and Theriot collected three hits apiece and Angel Pagan added an RBI single as the Giants snapped a modest two-game losing skid.
After tossing a perfect game in his last outing, Cain (9-2) overcame a sluggish start to work through five innings. He improved to 2-0 against the Angels after allowing three runs on six hits.
Three relievers bridged the gap to Santiago Casilla, who retired the side in the ninth inning for his 19th save.
Jerome Williams (6-5) exited the contest and was taken to a local hospital after experiencing shortness of breath. Williams, who was drafted by the Giants, permitted four runs on seven hits in 3 1/3 innings to take the loss.
Mark Trumbo homered and Albert Pujols had a run-scoring sacrifice fly for the Angels, who fell for just the fourth time in 12 outings.
GAME NOTEBOOK: Los Angeles ace Jered Weaver is expected to be activated off the disabled list on Wednesday. Weaver had been sidelined with a strained lower back. ... San Francisco's Brandon Belt extended his hitting streak to a career-high seven games with a double. ... Williams made 46 starts for the Giants from 2003-05.