The only Angels starter without a hit was third baseman Alberto Callaspo. He was replaced in the field in the fifth after being traded to AL West-leading Oakland for infielder Grant Green.
The Angels had their biggest lead, 11-7, after a four-run eighth when Erick Aybar's grounder easily scored pinch-runner Kole Calhoun for an 8-7 lead.
J.B. Shuck stopped in the middle of the baseline to avoid being tagged by second baseman Ian Kinsler, and then got out of a rundown when the fifth relay throw wasn't caught by pitcher Tanner Scheppers, an error that allowed him to get back to first. Howie Kendrick then added a two-run single, his 1,000th career hit, before Hamilton's RBI single.
Soto got the Rangers within 11-10 with his three-run homer in the eighth, that ball landing not far from where he hit his game-ending homer Monday night.
Every Texas starter had a hit off C.J. Wilson, who allowed six runs and a season-high 11 hits while throwing 109 pitches in four innings against his former team. Los Angeles trailed 6-3 after the left-hander threw his last pitch. He struck out six and walked three.
Notes: Texas starter Derek Holland allowed four runs and eight hits over six innings. He struck out six and walked two. ... Wilson has an 11.74 ERA (20 runs over 15 1-3 innings) in four starts as an opposing pitcher at Rangers Ballpark. He was 27-14 with 25 saves and a 3.89 ERA in 172 games (38 starts) there before getting a $77.5 million, five-year deal from his hometown Angels after the 2011 season. ... Angels manager Mike Scioscia was ejected in the second inning when he argued after when slow-footed Soto was called safe on a close play at first base. Crew chief Jerry Layne, who was at first base, heard only a few words from an irate Scioscia before tossing the manager. Layne then stood there stone-faced, appearing not to respond verbally, as Scioscia voiced his displeasure for a couple of more minutes before leaving the field.