Halladay (7-7) wasn't sharp, allowing five runs and 10 hits in seven innings. But the offense bailed out the two-time Cy Young Award winner.
Domonic Brown hit a go-ahead two-run double off Mike Leake (5-8) in a four-run fifth. Mayberry had three hits and three RBIs, Chase Utley, Howard and Kratz each drove in two and Juan Pierre had three hits and three runs.
The Phillies have won seven straight over the Reds and 12 of 13, dating to 2010. This was their first meeting this season.
The NL-Central leading Reds lost for just the third time in 11 games.
The five-time defending NL East champions have won three straight, but are eight games under .500.
After the Reds took a 5-4 lead in the fifth, the Phillies answered in the bottom half.
Pierre singled and scored on Utley's RBI double. After Howard was intentionally walked, Mayberry ripped an RBI single to tie it. Brown followed with a shot down the line that scored two to chase Leake and give Philadelphia a 7-5 lead.
Leake allowed seven runs and 10 hits in 4 1-3 innings.
Utley hit a sacrifice fly in the sixth and Mayberry connected off Jose Arredondo to extend the lead to 10-5.
The Reds loaded the bases in the first on three straight singles to start the game. Jay Bruce then ripped a line-drive double off the right-field wall that should've scored two. But Chris Heisey stopped after rounding third and was tagged out at the plate.
Scott Rolen's RBI groundout made it 2-0.
Pierre hit a double, stole third and scored on Howard's two-out single to cut it to 2-1 in the bottom half.
Howard drove one way out to right to tie it at 2 in the third. Kratz went deep to left-center to make it 3-2 in the fourth.
Kratz has seven homers in 61 at-bats. The 32-year-old local boy has turned into a fan favorite in his first extended action in the big leagues after 11 seasons in the minors. Filling in for All-Star catcher Carlos Ruiz, Kratz is hitting .295 with more extra-bases (13) than singles (5).
Cincinnati scored three runs with two outs in the fifth on Heisey's RBI double, Bruce's RBI single and a botched rundown that allowed Phillips to score after Bruce was picked off first.
NOTES: Rolen played his 2000th career game at third base. As usual, he was booed by Phillies fans who still haven't forgiven him for demanding a trade in 2002. ... Bruce was 3 for 3 to extend his hitting streak to nine games. He's 16 for 35 in those games. ... Jimmy Rollins snapped an 0-for-20 slump with a sixth-inning double. ... Philadelphia's Antonio Bastardo had two strikeouts in the eighth in his first appearance since Aug. 8. ... LHP Cliff Lee (2-7, 3.83) seeks his first home win this season Tuesday night against Reds RHP Homer Bailey (10-8, 4.16).