Konta beat world number 60 Kristyna Pliskova of the Czech Republic 6-4 6-7 (11-13) 6-3.
Her next opponent will be another Czech, Katerina Siniakova, who beat Serbian Nina Stojanovic 6-3 6-4.
Siniakova caused a surprise in the second round by defeating second seed Simona Halep.
Konta looked in control early on against her opponent - the twin sister of world number six Karolina Pliskova - as she took the first set with a single break of serve.
Neither player could force a break point in the second set and in the resulting tie-break Konta wasted two match points before the big-serving Pliskova levelled the match on her fifth set point.
But Konta stayed firm in the final set, claiming the break and reaching the semi-final on her fifth match point.
"I am very happy to have extended my stay here," she said.
"She is one of the best servers on tour so I knew I was going to have a hard time on her service games. I was very happy I was able to get that break in the third and see it out in the end."
British number one Johanna Konta continued her good start to 2017 by reaching the semi-finals of the Shenzhen Open in China.