The Cardinals went 3-8 on a trip that included seven straight losses -- four of them in Pittsburgh, allowing the Pirates to overtake them for the NL Central lead. Even during their worst trip of the season, the Cardinals maintained their knack for beating the Reds.
St. Louis took two of three at Great American Ball Park and has won its last six series against Cincinnati. The Cardinals lead the season series 8-4.
Carpenter's two-run double off the wall completed a five-run rally in the sixth against Mike Leake (10-5) and two relievers. Matt Adams, David Freese and Tony Cruz homered for the Cardinals, who have scored 13, 13, 3 and 15 runs in their last four games.
St. Louis finished with 19 hits and a season high in runs. Every starter except Lance Lynn drove in at least one run.
Like the Cardinals, the Reds have struggled to score runs and win games lately. They've dropped seven of nine, leaving the defending NL Central champions marooned in third place.
The Cardinals scored in the first inning of all three games of the series. They scored four off Bronson Arroyo on Friday night, one on Saturday and four more on Sunday off Leake, who had allowed a total of four runs in his last three starts combined.
Matt Holliday and Freese had RBI doubles, and Adams hit a two-run homer -- his first since July 6 -- for the 4-0 lead only 19 pitches into the game. Holliday improved to 9 for 20 career off Leake.
The Cardinals sent 10 batters to the plate for five runs in the sixth, aided by a pair of errors. They opened the inning with five consecutive hits, and Carpenter's two-run double off Logan Ondrusek made it 9-2.
The Cardinals hit only nine homers in July, including one after the All-Star break. They had six in three days at Great American Ball Park.
Reds third baseman Todd Frazier went without a hit for his ninth straight game, leaving him in an 0-for-28 slump. It's the longest by a Reds player since Drew Stubbs went 0 for 32 midway through last season.