The 19-year-old came from a break down in the deciding set to win 6-2 3-6 7-5.
Zverev is the first man to beat Wawrinka in a tour final since 2013 and also ended his 10-match winning streak.
Briton Dominic Inglot and Finland's Henri Kontinen beat Russia's Konstantin Kravchuk and Andrey Kuznetsov 6-3 6-0 to win the doubles title.
"I'm full of emotions. I just couldn't have chosen a better place to win my  maiden title," said Zverev.
"It was really hard when I was trailing 3-0 in the deciding set but I  forced myself to keep on fighting. And now I'm really happy with my win."
German teenager Alexander Zverev stunned US Open champion Stanislas Wawrinka to claim his first ATP title at the St Petersburg Open.