Frazier and Hanigan both went 4-for-2 as did Chris Heisley, who scored a run for the Reds.
The win was the third in four tries for the Reds, who now lead Major League Baseball in runs and lead the NL Central by seven games over St. Louis.
Johnny Cueto (17-6) won his eighth of his last nine decisions. He allowed two runs on four hits and struck out five over seven innings.
Wade Miley (14-9) took the loss with three runs on six hits in seven innings.
Gerardo Parra had two doubles and RBI in Arizona's fifth consecutive loss. The Diamondbacks managed only four hits in the game and trailed 3-1 after two innings.