Weaver (7-1), author of a no-hitter this season, had not pitched since May 28 due to a back injury. He was limited to 78 pitches against the Giants and left with a 3-0 lead, having allowed two hits while striking out three and walking two.
Three pitchers finished up the shutout, allowing just two hits and bringing the Angels their second straight win.
Alberto Callaspo put the Angels in front to stay with a solo homer in the second. Erick Aybar and Mike Trout both had RBI singles in the fifth and the Angels came up with back-to-back solo homers by Kendrys Morales and Mark Trumbo during a three-run eighth.
The loss went to Ryan Vogelsong (6-3), who surrendered three runs on seven hits in seven innings.