The top seed, who lost to Novak Djokovic in the French Open quarter-finals last week, was beaten 6-4, 6-7 (3/7), 6-3 by the 170th-ranked Brown.
The 34-year-old Brown, who famously knocked out Rafael Nadal in the second round of Wimbledon four years ago, saved 13 of 14 break points as he claimed only his fifth-ever win over a top-10 player.
Zverev, 22, has never won an ATP title on grass, while Brown will face Canadian teenager Felix Auger-Aliassime in his first top-level quarter-final since February 2017.
"I am very, very happy," Brown told www.atptour.com. "I didn't have a good grass-court swing last year and just wanted to come and play very good tennis. Stuttgart is a little bit at altitude and I think that helped my game.
"I've won three very good matches, two in qualifying and one against John Millman. The court played a little slower today and it was tough especially against Alex, who is a very good returner.
"So I had to make a lot of first serves and the break in the first set helped me to gain confidence."
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ