Jerry Hairston Jr. had two hits, two runs scored and two RBI, Joey Votto knocked in two, Adam Rosales homered and scored three times and Laynce Nix homered for the Reds, who won for the fourth time in five games.
Bronson Arroyo (5-2) got the win for Cincinnati, going seven innings and allowing five runs on 10 hits to go with five strikeouts.
Jon Garland (3-2) lasted just 3 2/3 innings for the Diamondbacks, allowing seven runs on 10 hits and one walk.
Felipe Lopez had a home run and scored twice, Eric Byrnes had three hits, and Justin Upton and Mark Reynolds each homered for Arizona, which lost for the fourth time in five games.
The Reds led 7-4 after five innings and then broke the game open with a four-run sixth, highlighted by RBI singles from Tavares, Votto and Brandon Phillips.