Wainwright threw 122 pitches and had nine strikeouts in the 7-2 victory -- on his 39th birthday -- Sunday at Busch Stadium. He is now 3-0 with a 2.65 ERA this season.
"A lot of hard work from a lot of different people has gone into [helping] me to be able to pitch again this year," Wainwright told reporters. "[It's crazy] when you think you're done three years ago and able to throw a complete game years later. ... It's a crazy game and I'm so blessed."
Right fielder Dexter Fowler led the Cardinals at the plate with a 2 for 3 night, which included a home run, a double and three RBIs. Cardinals shortstop Paul DeJong collected three hits in the victory.
"I wish I could do that at the age of 40," Fowler said of Wainwright. "I've been teasing him and saying he's over the hill. I know he's 39, but I say he's 40."
The win helped St. Louis (12-13) end a four-game losing streak and prevent a Cleveland (21-13) series sweep.
Indians right fielder Tyler Naquin hit a 360-foot, two-run homer to get the scoring started in the top of the second inning before the Cardinals took control of the interleague clash.
Brad Miller grounded out for the Cardinals in the first at-bat in the bottom of the second frame. DeJong and Yadier Molina followed with singles to right field before Matt Carpenter drew a walk to load the bases.
Fowler then stepped into the batter's box to face Indians starter Aaron Civale. The exchange lasted for just one pitch. Civale tossed a 74.9-mph curveball in for Fowler, who sent the offspeed offering to right field for a two-run double to tie the score at 2-2.
Cardinals outfielder Dylan Carlson then stepped to the plate and hit a 2-1 cutter to right field for a two-run single and gave St. Louis a 4-2 edge.
The Cardinals plated a fifth run on a balk in the bottom of the third inning. Fowler then returned to the plate to add to the lead in the bottom of the seventh frame.
Cam Hill entered the game in relief of Civale to start the half inning. Fowler fouled off Hill's first offering before he smacked an 0-1 fastball into the right field seats for a 383-foot homer. The blast left the field at 4.7 seconds, according to Statcast.
DeJong doubled in the third at-bat in the bottom of the eighth inning before he scored on a Molina single in the next at-bat for the final run of the game.
Wainwright retired the final 11 hitters he faced in order to secure the victory.
Naquin went 1 for 3 with two RBIs and a run scored in the loss. Molina and Tommy Edman each went 2 for 4 for the Cardinals.
Civale allowed eight hits and five runs to move to 3-4 on the season.
The Cardinals face the Cincinnati Reds in the first game of a National League Central division series at 6:40 p.m. EDT Monday at Great American Ball Park in Cincinnati. The Indians battle the Kansas City Royals at 8:05 p.m. EDT at Kauffman Stadium in Kansas City, Mo.