The double Wimbledon winner from the Czech Republic already owns a title from Sydney last month and lost to Naomi Osaka in the Australian Open title match.
She won here in 2015 and is playing the event for the first time in three years.
Kvitova will play either Switzerland's Belinda Bencic or Elina Svitolina, the Ukrainian winner of the last two editions in Dubai.
"It was a tough one today, she really didn't give me anything for free," Kvitova said. "I'm glad I was able to come back in the second.
"I'm pleased with my mental focus after losing the first set. I was calmer when I came back and played the second.
"She didn't give me any high balls. I really had to be very, very low, bend my knees, whatever I really needed.
"I'm a bit tired right now, to be honest. I have a final tomorrow, so I don't know how I going to recover. Hopefully I have a few hours to do something."
Hsieh, who lost to Kvitov in the Sydney second round, snatched the opening set on a pair of breaks, with the Czech forced into a fightback in the second.
The Czech, with 26 career titles, earned two breaks of her own in the second, with Hsieh saving a set point in the penultimate game before the contest levelled at a set apiece.
The third began with three straight breaks; but Kvitova settled into hold serve and run out the winner after more than two hours.
The victory was her fourth over Hsieh without a defeat and marked her 10th career Dubai win.
Results from the WTA Dubai Championships on Friday (x indicates seed):
Petra Kvitova (CZE x2) bt Hsieh Su-Wei (TPE) 3-6, 6-2, 6-4