The 25-year-old, who is currently the British number three, recovered from losing the first set to secure his progression through to the last four.
For Edmund, it is the first time he has reached the semi-finals of an ATP Tour event since June 2019.
In the last four he will next take on Serbia's sixth seed Miomir Kecmanovic.
Kecmanovic reached the last four with a gutsy deciding-set 3-6 6-2 6-4 win over fancied French fourth seed Ugo Humbert.
Edmund now has every chance of going all the way in a tournament which has already given him the boost he needed after his disappointing first-round exit at the Australian Open.