The fourth seed saved a set point from Harris in a tense opener and built on that to earn a 7-6 (8-6) 6-3 6-4 triumph in a little over two hours.
Zverev has dropped just one set across his five matches at Flushing Meadows this year and will face either Novak Djokovic or Matteo Berrettini as he seeks a place in back-to-back finals.
"I just hope their match goes on for eight hours and 30 minutes," Zverev joked when asked who he would prefer to face in the semi-finals.
"I didn't have a lot of chances on Harris' serve today and somehow managed to win that first set, which loosened me up a little bit and I started playing a lot better.
"In the third set, he started swinging. He started playing incredible tennis. So yeah, I'm happy to be through in three."
Harris beat three top-30 seeds to make it to this stage and more than held his own in the opening set against Zverev, who lost to Dominic Thiem in last year's final.
After sharing a break of serve apiece, Harris led 6-5 in the tie-break but lost the next three points to offer his opponent a platform to build from.
Despite struggling with a minor back problem, Zverev took advantage of his unseeded opponent's five unforced errors by holding throughout the second set.
The four-time grand slam semi-finalist raced into a 4-0 lead in the third set, but Harris slowly regained his composure and claimed the next three games.
Zverev's monster serve came to his rescue, however, as he took the eighth game and eased over the line in style with his 21st ace of the contest.