Terms of the contract weren't disclosed, but the Los Angeles Times reported it was worth $85 million through 2016.
The signing comes as Weaver, two-time all-star and Cy Young Award candidate, is putting together the best season of his career.
The 28-year-old right-hander leads the American League in ERA (2.10), and is tied for second in walks/hits per inning pitched. Weaver is third in wins at 14-6 and in batting average against (.207).
He was taken by the Angels with the 12th overall draft pick in 2004 and since his debut two years later, he has compiled a 78-45 record with a 3.30 ERA.