Edmund, who needed to qualify for the event, dropped the opening set on the way to the last four after beating American Steve Johnson 5-7 6-3 6-3.
He is now just one win away from a first ever final on the ATP Tour and will meet Damir Dzumhur after the Bosnian beat Hyeon Chung 6-4 6-2.
Edmund through in Winston-Salem
Top seed Roberto Bautista Agut made safe progress, beating American wild card Taylor Fritz 6-2 7-6 (7/3).
Waiting in the semi-final for the Spaniard is unseeded Jan-Lennard Struff, who defeated Borna Coric 6-4, 7-6 (7/2).
Nadal beats Opelka in Rome semi-final
Djokovic to face Nadal in the final at the Italian Open for sixth time