Zverev cut an often dejected figure as he slumped to a 6-1 and 4-2 deficit, before finding a way to haul himself through 1-6 7-6 (5) 7-6 (1) 6-3 in a gruelling three-and-a-half hour battle.
Coric had punished some pitiful Zverev serving in the opening set but was guilty of a succession of glaring misses in the second set tie-break which ultimately helped set the German on the way to victory.
The Croatian had saved six match points to beat Stefanos Tsitsipas in a previous round but did not look likely to be pushed to the limit again as he capitalised on Zverev's poor opening to seize control.
Coric, the 27th seed, cemented his position when he fought back from 40-0 down to break Zverev in the fifth game of the second set, only for Zverev to belatedly stir and force the tie-break which saw him pull himself back into the match.
Errors continued to litter Coric's game early in the third set, in which it was Zverev's turn to relinquish a break and drift into a second tie-break, which Coric's poor choices enabled the favourite to claim with the minimum of fuss.
Although his service speed significantly picked up, Zverev was still proving inconsistent and was forced to save four break points in the fifth game of the fourth set in order to stay on serve at 3-2.
A brilliant forehand down the line handed Zverev the crucial break to go 5-3, and despite managing to save the first two match points against him, there were to be no repeat heroics from Coric as a below-par Zverev finally got the job done.
Zverev admitted: "I just started playing a little bit more aggressive, because if I had played the way I (started), it's not the level for a quarter-final game in a grand slam.
"I had to start playing better and I was a little bit more consistent, my serve got better, and I thought to myself, I'm down 6-1 6-2, I had nothing to lose in that moment."
Zverev's win makes him the first German player to reach the semi-finals of the men's singles at the US Open since Boris Becker, who reached the last four in 1995 where he was beaten by Andre Agassi.
Zverev added: "It's great to be in the semi-finals and unfortunately we haven't been there in 25 years for a German player, but there will be many more after me and hopefully I can continue the way I'm going."