Although Zverev fired 14 aces in the match, his erratic serve was on display at the Gerry Weber Stadion as the 22-year-old made nine double faults to lose to Goffin for the first time in three meetings between the pair.
Goffin had a chance to seal the match in the third set at 5-4 but Zverev saved two match points to take it to a tiebreak, where the Belgian triumphed after winning all his service points.
Later, Roger Federer survived a mid-match scare to get past Spaniard Roberto Bautista Agut 6-3 4-6 6-4 and reach the last-four at Halle for a 15th time as he chases a 10th title in the tournament.
Up next for Federer is Frenchman Pierre-Hugues Herbert who progressed after defending champion Borna Coric was forced to retire from their quarter-final after dropping the opening set 7-5 due to a suspected back injury.
(Reporting by Rohith Nair in Bengaluru; Editing by Christian Radnedge)
