"We did a great job coming back," Brewers manager Craig Counsell said. "There were a lot of positive things that happened tonight. We had a huge two-out rally that got us three runs and got us back in the game and another real good rally to take the lead. A lot of really good things happened tonight."
After falling behind, 6-1, the Brewers answered with a pair of runs in the bottom of the second inning. Elian Herrera came across to score on a flare single by Gennett. Reds third baseman Todd Frazier mishandled the throw in from left fielder Skip Schumaker, which allowed Jean Segura to score.
Milwaukee capitalized on a break to score three times in the fourth inning.
Adam Lind appeared to strike out to end the inning on an 0-2 curveball from Reds reliever Pedro Villarreal, but home-plate umpire Dan Bellino ruled it a foul ball. Lind then singled home a run and Ryan Braun followed with a run-scoring single to cut Cincinnati's lead to 7-6.
Frazier hit his 30th home run of the season in the fifth, but the Brewers again had an answer in the bottom half of the inning.
Gennett delivered the big blow, a one-out triple to right that scored Segura to tie the game. Jonathan Lucroy followed with a sacrifice fly to give the Brewers a 9-8 lead.
"I'm proud of the way the guys fought back tonight," Garza, who allowed seven runs in 3 2/3 innings, said. "They fought their [tails] off. That was awesome to watch. It is a shame that I wasted nine runs."
Lucroy, Lind, Segura and Gennett combined for 11 of Milwaukee's 13 hits. Gennett's four hits matched a career high set on Aug. 15 against Philadelphia.
With his three-hit game Saturday, Segura is hitting .317 (13-for-41) with two doubles and three RBI over his last 10 games.
"I really liked the way Seggy swung the bat tonight," Counsell said. "He's been working on a couple of different things and some of that work paid off tonight with good results tonight. It was good to see some adjustments he's been trying to make paid off with some really hard-hit balls."