Weaver (1-1) suffered a fracture in his non-throwing elbow after making only two starts this season and he made his comeback a successful one by allowing a run on five hits over six innings. He struck out seven.
The Angels ended a two-game skid that had followed eight straight victories.
Weaver threw 86 pitches before Kevin Jepsen and Garrett Richards each turned in a perfect inning of relief.
Ernesto Frieri came on in the ninth in search of his 11th save and he secured it only after giving up solo homers to Adrian Gonzalez and Scott Van Slyke.
Mark Trumbo's two-run homer in the fifth put the Angels in front for good at 3-1 and Trumbo added a sacrifice fly in the seventh for what turned out to be the game-winner.
Chris Capuano (1-4) suffered the loss, giving up three runs on six hits in 5 2/3.
Wisconsin business offering 'therapeutic cuddling' forced to close
Reindeer recovered after escaping from Santa during lighting ceremony