Weaver became the first 20-game winner in the American League this year in a two-run, five-hit effort. He is the first member of the Angels to reach that plateau in seven years.
Los Angeles avoided elimination in the Western Division pennant chase and stayed in the race for the league's second wild card position, having begun the evening two games behind Oakland in the chase for that spot.
Mike Trout put the Angels in front to stay with a first-inning homer. Mark Trumbo had an RBI in three separate at-bats on doubles in the fourth and sixth innings and a single in the seventh.
Ryan Dempster lost for the second time in three starts after having won five decisions in a row. Dempster (12-8) gave up four runs on seven hits in 5 2/3.
The Rangers would have clinched no worse than a wild card berth with a victory. The teams meet twice more this weekend before Texas finishes the season with three games in Oakland.
Exploding whale video goes viral on Internet
Reindeer recovered after escaping from Santa during lighting ceremony