Smith (2-3) allowed one run on two hits with four walks and four strikeouts for the Royals, who won for the third time in their last 10 games.
Lorenzo Cain hit a two-run homer in the first inning off LA starter Garrett Richards (3-2), who allowed four runs on five hits, with three walks and two strikeouts over five innings.
Jonathan Broxton got Alberto Callaspo on a groundout with runners in first and third in the ninth to record his 23rd save.
Angels center fielder Mike Trout went 0-for-3 with a walk, breaking a 12-game hitting streak -- and a streak of 15 games in which he scored at least one run. That tied him with Roy Hartsfield of the 1950 Boston Braves for the longest such streak by a major league rookie.
Mark Trumbo drove in the only run for LA, which lost for the third time in its last six games and missed a chance to pick up a game on first-place Texas in the AL West. The Rangers fell to Boston 2-1 earlier Tuesday.