Pittsburgh manager Derek Shelton used bullpen-by-committee to give his starting pitchers an extra day of rest with the break starting Monday.
Rookie relief pitcher Carmen Mlodzinski had the first start of his career. Ryan Borucki, Osvaldo Bido, Angel Perdomo, Yerry De Los Santos, Colin Holderman and David Bednar also pitched with none going more than 1 2/3 innings.
Bido (1-1) recorded the win and Bednar earned his 17th save.
Arizona was 0-for-8 with runners in scoring position and left five runners on base.
The Diamondbacks took a 1-0 lead in the first inning after taking advantage of walks allowed by Mlodzinski to Geraldo Perdomo (no relation to Angel Perdomo) and Christian Walker
With two outs, Geraldo Perdomo and Walker attempted a double steal and a throw by catcher Austin Hedges attempting to get Walker out at second base landed in center field. Perdomo scored on the error.
After Arizona starter Zach Davies (1-5) walked Carlos Santana to start the second inning, Choi belted a home run to center field to put Pittsburgh ahead 2-1.
Alek Thomas hit his second home run in as many days for Arizona, a solo shot to lead off the third inning to tie the game at 2.
Pittsburgh rallied for a run in the fifth after Tucupita Marcano and Nick Gonzales led off the inning with consecutive singles. Hedges executed a sacrifice bunt to move Marcano to third base and Gonzales to second. Jack Suwinksi then hit a sacrifice fly to left field to score Marcano and give the Pirates a 3-2 lead
After Choi hit a double with one out in the ninth inning, pinch runner Connor Joe replaced him. Jared Triolo followed with a single to bring home Joe with the last run of the game.
--Field Level Media