Cincinnati's victory ended an evening of National League Central action that tightened the division race. A loss by front running Pittsburgh to San Diego allowed St. Louis to move within a game of the Pirates and pushed the Reds within 2 1/2 games of the division lead.
Choo hit a solo homer in the first and added a two-run single in the Reds' three-run second. Cincinnati added three more in the third, two of them on a single by Devin Mesoraco, and Joey Votto singled home another run in the fourth.
Arizona then scored seven unanswered runs, two of them coming on a homer by Adam Eaton during a four-run fifth. Gerrado Parra added a solo homer in the eighth.
With the Diamondbacks having closed within a run, the Reds came back with RBI singles by Todd Frazier and Brandon Phillips in the eighth.
Mike Leake (11-5) survived six innings to get the win, giving up four runs on six hits without a walk. Aroldis Chapman made things interesting in the ninth by putting two runners on before recording his 32nd save.
Brandon McCarthy (2-8) was roughed up for seven runs on eight hits in 2 1/3 innings to take the loss.