The Mariners had led 6-0 after 3 1/2 innings, but allowed the Rangers to score the next six runs to tie it up.
Then in the eighth, Tanner Scheppers (1-1) came on to pitch and Smoak smacked a 1-0 pitch over the center field fence for his 15th homer of the year.
The Seattle first baseman added a run-scoring single in the ninth for an insurance run and finished 3-for-4 with three RBI as the Mariners evened their three-game series.
Michael Saunders also knocked in three runs and Dustin Ackley added a solo shot for Seattle.
Lucas Luetge (2-1) earned the decision and Tom Wilhelmsen recorded the final five outs for his 27th save.
Mike Napoli went 2-for-3 with a three-run homer in his return from the disabled list for the American League West-leading Rangers.