The 32-year-old American was tiring noticeably in the second set but broke Zverev in the ninth game to go up 5-4.
The moment inspired Isner, who changed to a yellow shirt and won that set and the next for his first victory over world number five Zverev.
"I couldn't have scripted this," said the 14th seed in a courtside interview after winning every service game.
"(When) I came into this tournament, I had won one ATP match all year and was playing very poorly," said the big-serving Isner.
"I won my first match (here) in three sets and that's how tennis goes - you start to gain a little confidence and the next thing you know things start to roll your way."
The win will enable Isner to become the highest-ranked American at number nine when the new world rankings are released on Monday.
He also is the first American man to win in Miami since Andy Roddick in 2010.
Isner, who had failed to win a match at five of his previous six main tour events in 2018, had never won an ATP Masters 1000 final before Sunday.
Zverev, 12 years Isner's junior, saved three break points in the second game of the match and went on to take the tiebreaker when he won four points in a row.
The second set went to 4-4 before Isner broke Zverev.
Now reenergised, the American saved two break points in the next game to take the set.
Despite failing to convert four break points at 2-2 in a tense third set, Isner broke Zverev at 5-4, the unhappy German breaking his racket in disgust.
"I think I missed more shots today than I did the whole tournament," Zverev said. "I played bad from the baseline. But, it's not easy against John, because you always feel the pressure that if you get broken you're not going to win the set."
Isner then closed out the match with an emphatic ace, his 18th of the day.
The match, which lasted two hours and 30 minutes, was the last for the Miami Open at Crandon Park. After 32 years it will move to a new facility next year at the NFL Miami Dolphins stadium.
It also capped a successful weekend for American tennis with U.S. Open champion Sloane Stephens claiming the women's title on Saturday.