Starlin Castro drove in the only run of the game for the Cubs, who have lost four of their past five. Edwin Jackson (5-8) gave up all four runs on six hits with four walks and two strikeouts over 5 1/3 innings.
In the first inning, Bruce doubled to right with two outs to score Todd Frazier. Votto, though, was nailed at home to end the inning.
Chicago had just one baserunner through the first three innings, but got on the board in the fourth as Ryan Sweeney doubled to start the inning and Castro singled to batters later to tie the game. Luis Valbuena singled, but Nate Schierholtz and John Baker popped out to end the frame.
Cincinnati went back on top in the sixth as Frazier walked to start the frame and Votto scored him with a double. After Devin Mesoraco singled, Bruce brought home Votto with a double.
Jonathan Broxton tossed a flawless eighth for Cincinnati and Aroldis Chapman allowed a two-out double from Justin Ruggiano before striking out Mike Olt to end the game and pick up his 14th save of the season.