Zverev won 6-7 (8-6), 7-6 (7-3) 6-4 after more than three hours on Friday.
Only a month ago at Indian Wells, Griekspoor prevailed against Zverev for his first top-five win.
This time, with Zverev roared on by a home crowd, Griekspoor served for the match at 5-4 in the second set but blew it. The Dutchman also had Zverev 0-40 in his second service game in the third set.
"I'm proud to win this match and looking forward to the next two, hopefully," Zverev said.
The third-ranked Zverev will face 77th-ranked Fabian Marozsan of Hungary.
Marozsan reached his maiden ATP semi-finals after beating Zizou Bergs of Belgium 6-3 7-6 (7-4).
Ben Shelton advanced to his second clay-court semi-finals by beating Luciano Darderi 6-4 6-3.
The American, who won the Houston title on clay a year ago, hit 29 winners to Darderi's 12 in chilly temperatures in Bavaria.
Second-seeded Shelton next faces Argentina's Francisco Cerundolo for a spot in the final. The fifth-seeded Cerundolo moved into the last four by defeating David Goffin 6-2 6-4.