The Briton was beaten 6-7 (7-5) 6-3 6-4 in what was the second semi-final of his career.
The world number 45 won the first-set tie-break but Harrison took the next two sets, winning eight of the final nine points to wrap up victory.
He will meet three-time Atlanta champion and fellow American John Isner in Sunday's final.
Kyle Edmund failed to reach his maiden ATP Tour final as he lost to American Ryan Harrison at the Atlanta Open.