The 15-year-veteran, who did not pitch in the majors in 2014, went eight innings for the first time since May 8, 2013. Marquis (2-1) scattered two runs on seven hits and two walks with three strikeouts.
Jimmy Nelson (1-2) allowed seven runs -- six earned -- on six hits and a career-high five walks in 2 1/3 innings for the Brewers, who have yet to win back-to-back games this season.
"He wasn't commanding the ball like he has the other outings. He started out OK, then Frazier came up and for whatever reason he just lost his command," Brewers manager Ron Roenicke said of Nelson.
Milwaukee mounted a ninth-inning rally that came up short. With four runs already on the board in the frame, Ryan Braun represented the tying run as a pinch hitter against Aroldis Chapman, but he struck out against 100 mph heat to end the game.
Jean Segura was 2-for-5 with three runs batted in for the Brewers.
After a 1-2-3 first inning, the game quickly went south for Nelson. He walked Frazier to start the second, and Bruce, mired in an 0-for-14 slump with nine strikeouts, hit a towering home run to right field to put the Reds up 2-0.
"It's nice for Jay to have good at-bats," said Reds manager Bryan Price. "He took some tough pitches. He just looked very comfortable at the plate."
Nelson's woes, though, did not end there. With Marlon Byrd on second and one out, the Brewers opted to put Pena on base to go after Marquis. The plan backfired when Marquis, owner of five career home runs, singled off Aramis Ramirez's glove to score another run. Billy Hamilton followed with a single, and the inning finally ended when Joey Votto hit into a double play.
Segura's two-out single in the third got a run back for the Brewers, but Nelson never settled in. He walked the first two batters and uncorked a pair of wild pitches to give that run right back. Byrd drove in a run and a passed ball from Martin Maldonado put the Reds up 7-1 through three.
Rob Wooten was able to keep Cincinnati off the board for a couple innings, but he was charged with two more runs in the seventh. He departed with runners on the corners and one out, and Neal Cotts allowed both inherited runners to score on Bruce's sacrifice fly and Brandon Phillips' double, his first extra-base hit of the season.
Burke Badenhop was called on to record three outs in a 9-2 game but failed. He loaded the bases before striking out Elian Herrera, but Maldonado followed with an RBI single. The Reds summoned Chapman, who promptly hit Hector Gomez to allow a run to score and gave up a single that scored two.
After Luis Jimenez struck out, Braun got a pinch-hit appearance but could not come through.
Bruce tied Vada Pinson for 10th all-time in Reds history with 186 home runs ... Badenhop was charged with four runs in one-third of an inning ... Frazier stole two bases ... The Brewers were 5-for-10 with runners in scoring position ... Prior to the game, Cincinnati placed starter Homer Bailey on the 15-day DL and recalled Carlos Contreras.