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 either Frenchman Gilles Simon or Canadian teenager Felix Auger-Aliassime in his first top-level quarter-final since February 2017.
Results from the ATP tournament in Stuttgart on Thursday (x denotes seeding):
Dustin Brown (GER) bt Alexander Zverev (GER x1) 6-4, 6-7 (3/7), 6-3
Denis Kudla (USA) bt Gaël Monfils (FRA x5) 7-5, 6-7 (3/7), 7-6 (7/3)
Matteo Berrettini (ITA) bt Karen Khachanov (RUS x2) 6-4, 6-2