Schnyder now has a 3-5 record against Kuznetsova, whom she last beat at the German Open in Berlin in May 2005. Kuznetsova had won their last three matches.
"I played a great match, it was a real fight,'' the Swiss left-hander said. "There were lots of winners and break points. She defended the baseline very well, it was very tough.''
Schnyder broke serve for a 6-5 lead in the final set and clinched the win when Kuznetsova sent a backhand slightly wide.
The 11th-ranked Swiss is seeking her second title of the year after winning in Bali. Schnyder has 11 career titles.
Kuznetsova was coming off a runner-up finish at the China Open, her fifth final defeat of the year, with no titles in 2008. She was No. 2 in the world one year ago.
The Russian has had three semifinal appearances in Stuttgart, while Schnyder had one, in 2006.
Seventh-seeded Vera Zvonareva also advanced to the second round by beating Daniela Hantuchova 6-3, 6-2.
Zvonareva won the Olympic bronze medal in Beijing and then also won the tournament in Guangzhou, her second title of the year.
"First match indoors, it was difficult to play my best tennis,'' the Russian said.
Hantuchova, a 25-year-old Slovak, was runner-up in Stuttgart in 2002.
Jankovic cruises into U.S. Open semis
Celestini Slams Racist “Idiots”
Dementieva charges into U.S. Open semis