Texas lost its eighth in a row and has the worst record in the majors.
Trout, who will start the All-Star game in the AL outfield, sent three runs home by blooping a two-out double in the second inning. He broke a 4-all tie with a double in the fourth.
The Angels, a major league-best 26-9 since June 6, swept a four-game series against Texas for the first time in their history.
Tyler Skaggs (5-5) left after giving up two singles to start the sixth.
Joe Smith pitched a perfect ninth inning for his 15th save in 19 opportunities. He set an Angels record with his 10th consecutive appearance of at least an inning without allowing a hit. Already in July, he is 1-0 with eight saves.
Scott Baker (0-3) lost in his fourth start for Texas.
Alex Rios drove in three runs for the Rangers.
With the bases loaded in the second, Trout hit a fly to short left-center field. The ball bounced away from left fielder Jake Smolinski's diving attempt. When center fielder Daniel Robertson hesitated before throwing home, Chris Iannetta scored from first base behind David Freese and Efren Navarro.
The Angels made it 5-4 in the fourth on doubles by Kole Calhoun and Trout.
NOTES: Trout's RBIs increased his season total to 73, making him one of five players in Angels history with 20-plus home runs and 70-plus RBIs before the All-Star break. ... When Skaggs trapped Elvis Andrus off first base in the first inning, it was the AL-high ninth caught stealing for Andrus. ... All four Angels reached base leading off an inning also scored. Three had been walked. ... Ryan Feierabend, who entered the game in the seventh, allowed the Rangers to tie a season record as the 30th pitcher to appear in a game. He is one of 50 players overall for Texas this year. ... Rangers pitchers walked four batters; all four scored.