Grichuk was moved up to second in the Cardinals' struggling batting order. He doubled home a run in the sixth inning and hit his 13th homer in the 13th off Dylan Axelrod (0-1), Cincinnati's eighth pitcher.
Seth Maness (4-1) gave up a pair of walks in two innings.
Manager Mike Matheny changed the batting order -- Grichuk went from batting eighth on Tuesday to second -- to try to spark his struggling offense, but the Cardinals didn't get much going until late in the game.
Left-hander David Holmberg allowed two runs, including Grichuk's RBI double off the top of the wall in center that cut it to 3-2 in the sixth.
Carpenter tied it with a homer in the eighth off J.J. Hoover, only the third that the reliever has allowed this season. It was Carpenter's fifth homer in his last six games.
The Reds strung together walks and infield hits while scoring three times off Carlos Martinez.
They loaded the bases in the third with a walk, an infield single and a fielding error by shortstop Jhonny Peralta. Brayan Pena's opposite-field double landed just inside the left-field line and made it 2-0.
The Reds loaded the bases again in the fourth with a pair of walks -- one to Holmberg -- and Brandon Phillips' single just out of the reach of second baseman Kolten Wong. Todd Frazier's soft groundout got in another run.
Cardinals: Yadier Molina got hit in the facemask by Phillips' foul tip in the fourth inning. Phillips checked to see if the catcher was all right as he shook off the hit.
Reds: LH Sean Marshall threw off a bullpen mound for the first time since surgery on May 20 to remove scar tissue in his pitching shoulder. He'll throw every three days.
Cardinals: Michael Wacha (12-4) has won both of his starts against the Reds this season, allowing only two runs in 13 1/3 innings.
Reds: Michael Lorenzen (3-6) tries for his first win since June 21. He's 0-4 in his last six starts and has been hit hard in his last three, giving up 17 runs in 13 innings.
Link to box score: St. Louis (68-39) 4 at Cincinnati (48-57) 3 (13 innings)