Starting off the 2012 season, Weaver pitched a four-hit shutout against Kansas City Royals on April 6. Shortly thereafter, he recorded his first official career no-hitter on May 2 against the Minnesota Twins. Weaver allowed only two baserunners – Chris Parmelee reached on a passed ball after a strikeout in the second inning, and Josh Willingham walked in the seventh, he struck out nine and walked only the one batter. On May 28, Weaver sustained a lower back injury after following through on a pitch and was subsequently placed on the 15-day disabled list. Nearing the end of the season and with the Angels still in contention for a postseason spot, Weaver for the first time in his career won his twentieth game, on September 28 against the Texas Rangers.