With the score tied 1-1 in the sixth, Franklin Gutierrez led off with a single and was forced at second on a Kyle Seager grounder.
Two outs later, Smoak blasted a pitch from Angels starter C.J. Wilson into the left-field seats for his 18th homer of the season.
Mike Zunino also drove in a run for the Mariners, who avoided a three-game sweep.
Wilson (17-7) yielded three runs on eight hits in an 8 1/3-inning start.
Kole Calhoun socked a solo homer for the Angels.