CHICAGO -- Once again, the Cardinals relied on Matt Adams' clutch bat.
Adams doubled sharply in the first inning, a one-hopper that bounced past first baseman Anthony Rizzo and into right field to score two runs. Adams' two-run triple with two outs in the seventh made it 5-2.
"He was our guy today," Cardinals manager Mike Matheny said. "If you look at when we started to gain some traction in our division, it's when Matt started to go. Not to put the pressure on him, but he was the guy at the time and he's continued to do that, to step up big for us."
Helping out Adams was the 37-year-old Pierzynski, who signed with the Cardinals on Saturday, 10 days after he was released by Boston. St. Louis had been looking for a steady presence behind the plate since All-Star catcher Yadier Molina tore a ligament in his right thumb July 9.
Molina had surgery two days later and is expected to miss eight to 12 weeks.
"That was pretty much a cram session for A.J. there," Matheny said. "He did a nice job coming in, obviously making an impact with the bat, but I felt like he had a nice feel for what Shelby (Miller) was doing."
Miller returned to the Cardinals' rotation and pitched effectively into the sixth inning.
The young right-hander began the game with three perfect innings and retired 16 of his first 18 batters. In his first start since being removed from the rotation July 10, Miller allowed two runs and three hits in 5T innings. He had given up at least three runs in his previous five starts.
"When you get in a groove and you're feeling pretty good, in a rhythm, you just keep going," Miller said. "That's kind of what I felt like I did today."
Nate Schierholtz hit a solo shot for the Cubs in the sixth, tying it at 2. It was Schierholtz's fourth career pinch-hit homer.
Rizzo drove in a run with a groundout in the fourth.
Cubs starter Jake Arrieta settled in after the two-run first inning, allowing just three baserunners the rest of the way. He thwarted Cardinals threats in the fourth and fifth, and a diving catch by left fielder Chris Coughlan helped Arrieta escape the sixth.
"He did it with not his best stuff, but he was still pretty effective," Cubs manager Rick Renteria said. "That performance was probably indicative of how much he's grown."
With Arrieta out of the game, the Cardinals pulled back ahead in the seventh, scoring four runs against reliever James Russell (0-2). Jon Jay hit a leadoff single, advanced on a sacrifice and stole third before scoring the tiebreaking run on Matt Carpenter's grounder.
Russell's four earned runs allowed marked his worst outing since July 21, 2012, when he gave up six, also against the Cardinals.
NOTES: Adams had only four RBIs in his previous 23 games against the Cubs. ... Pierzynski, who batted sixth for the Cardinals, was booed loudly by the Wrigley Field crowd during his first at-bat. Pierzynski played seven seasons on the south side of Chicago for the White Sox. ... The Cubs optioned RHP Neil Ramirez to Triple-A Iowa and recalled RHP Blake Parker. The 25-year-old Ramirez has a 0.96 ERA in 33 appearances this season. Renteria indicated the move was made to give Ramirez a rest and was not based on performance. ... Rizzo went 0-for-4, ending his 10-game hitting streak. ... Cardinals ace Adam Wainwright (12-5, 2.02 ERA) pitches the series finale Sunday against Kyle Hendricks (1-0, 2.77), who will make his third big league start.