Duvall hit a sacrifice fly to give the Reds a 1-0 lead in the fourth and Tucker Barnhart walked with the bases loaded to make it 2-0 in the sixth. Pirates starter Trevor Williams gave up two runs and six hits in 5 1/3 innings.
Josh Bell and David Freese hit RBI singles in the Pirates sixth.
The Pirates have particularly struggled with the last-place Reds, who could sweep Pittsburgh for the second time in three series this season with a win Thursday.
Cincinnati is 8-1 against Pittsburgh this year.
Reds: CF Billy Hamilton went 1 for 5 after leaving Tuesday’s game with an apparent ankle injury.
Reds: RHP Sal Romano (2-2, 4.57) will look to pitch into the fifth inning against the Pirates on Thursday after being pulled with two outs in the fourth against Miami in his last start. Romano struggled controlling his pitches in that start, where he walked six and struck out five.
Pirates: RHP Chad Kuhl (3-7, 4.84) will look for his first win since July 6 when he faces the Reds on Thursday. He is 1-1 with five no decisions in his past seven starts.