Weaver (6-1) bounced back from a poor outing against Texas to turn in a seven-inning effort. He gave up both runs and all three hits while striking out four. He had been roughed up for eight runs on 10 hits in 3 1/3 in his previous start against the Rangers.
Weaver also scored a run in the fifth on a triple by Mike Trout, who then scored on Mark Trumbo's double. Weaver led off the fifth with a single, just the fifth hit in his six-year career.
The Angels eventually scored three runs in the fifth to take a 4-0 lead, but the Padres cut their deficit in half through seven innings.
Los Angeles put the game away in the ninth with three more runs, two of them coming in on a double by Erick Aybar. Free-agent acquisition Albert Pujols went 1-for-4, extending his hitting streak to seven games.
Jeff Suppan (2-2) took the loss, allowing four runs on six hits with five walks in five innings.
Attkisson leaves CBS News, reportedly over network's 'liberal bias'
Ohio bar shooting arrested, charged with murder