Matt Carpenter singled in two runs in the third to help back Wainwright (14-7), who was in command and allowed just five hits and one walk after going 0-2 in his previous four starts.
Junior Lake drove in the Cubs' only run with a double in the sixth.
Wainwright hadn't won since July 21 at home against San Diego and had allowed 14 runs in 28 innings during the span.
On Sunday, he faced only one batter over the minimum through the first five innings and only 26 through seven innings.
Chicago starter Edwin Jackson (7-13) allowed three runs, but only one earned, through six innings. He walked four and struck out three.
Jackson has been stronger in the second half after an 1-8 start. He got little support on Sunday and his defense didn't help when Lake dropped a fly ball in center field for an error in the Cardinals' three-run second inning.
The Cubs have scored just 12 runs in their past eight games at Wrigley Field and have been shut out in five of those contests.
St. Louis catcher Yadier Molina had two doubles in his third game back after two weeks on the disabled list.
Starlin Castro was back in the Cubs lineup a day after being pulled for making a mistake the day before, and had an infield single. Manager Dale Sveum said Castro had atoned for his mistake.
On Saturday, the shortstop dawdled after catching a popup in shallow left field, allowing a run to score and Sveum pulled Castro from the game.
Sveum was thrown out of Sunday's game in the seventh for arguing with plate umpire Phil Cuzzi after Donnie Murphy was called out on a check swing. Sveum yelled from the dugout, then came onto the field to continue the argument following the ejection.
Carpenter's single with two outs and the bases loaded drove in two runs as the Cardinals jumped ahead 3-0 in the second.
With one out, Molina and Jay bounced back-to-back doubles just inside third base to make it 1-0.
Rookie Kolten Wong's deep fly ticked off Lake's glove for an error, putting Wong on second and Jay on third. Following an intentional walk to Daniel Descalso and fly out by Wainwright, Carpenter's hit up the middle drove in Jay and Wong.
The Cubs cut it to 3-1 in the sixth. David DeJesus, who had walked with two outs, scored on Lake's double to the gap.
Jay's three-run homer in the seventh off James Russell, the second of four Chicago relievers, made it 6-1.
DeJesus was thrown out trying to score from third on Anthony Rizzo's fly ball in the eighth.
NOTES: Wainwright had a season-high 12 strikeouts on April 13 against Milwaukee. . The 23-year-old Castro, one of the Cubs' most touted young players, has struggled much of this season. He entered Sunday hitting .244 with seven homers and 32 RBIs, and was 0 for 16 in his past five games. But Sveum was willing to give him another chance. ''I don't think this kid can get better by not playing today and understanding the adversity that we all go through in a game,'' Sveum said before the same. ... Descalso, a left-handed batter, started at shortstop for St. Louis on Sunday against Jackson, a right-hander. He replaced right-handed hitting, Pete Kozma who played Saturday. Manager Mike Matheny stopped short of saying the two would platoon the rest of the season. ''I am still comfortable with (Kozma's defense), but I think we've all been becoming more comfortable with the innings (Descalso) has been playing as well, and how he's swinging the bat at times. I think you're going to see both of them.'' Kozma, was hitting .223 entering the game and Descalso was at .254. ... Wong, one of the Cardinals' top prospects, started at second on Sunday and appeared in each game of the series after making his major league debut on Friday.
Link to box score: St. Louis 6 at Chicago 1
Link to game discussion at The Cardinal Nation message board