Mahle (7-6) allowed five hits and struck out four over 6 2/3 innings to win his fourth straight decision. In his last seven starts, the 23-year-old right-hander has a 2.06 ERA.
Raisel Iglesias, Cincinnati’s third reliever, got the final five outs for his 17th save in 20 chances.
Albert Almora Jr. and Ben Zobrist drove in the Cubs’ runs on a 70-degree day at Wrigley Field with a stiff wind blowing in from the north.
Cubs starter Mike Montgomery (3-3) allowed three runs on six hits in five innings while walking two and hitting two batters. He scuffled in the fourth and fifth as the Reds built a 3-0 lead.
The Reds swept the Cubs in a four-game series in Cincinnati two weeks ago and kept it up on Friday by jumping ahead 2-0 in the fourth after loading the bases with no outs.
Duvall lined a single up the middle to score Gennett, then Joey Votto came home on Scott Schebler’s double-play grounder.
Cincinnati tacked on a run in the fifth when Hamilton scored from third on Gennett’s sacrifice fly.
The Cubs cut it to 3-1 in the bottom half of the inning when Almora grounded into a forceout and closed to 3-2 in the eighth on Zobrist’s sac fly.
Reds RHP Matt Harvey (4-5, 4.91) takes the mound against Cubs RHP Tyler Chatwood (3-5, 4.54) on Saturday. Harvey has won his last three starts, with a 1.47 ERA over 18 1/3 innings. Chatwood yielded seven runs in five innings to the Twins in his last outing, but still got a win as Chicago outslugged Minnesota 14-9. He leads the majors with 66 walks.