Arizona tied it with a three-run fourth, two of the scores coming on Allen's fourth home run of the season.
A two-run double by Gerardo Parra gave the Diamondbacks the lead in the seventh and Roberts hit a solo homer in the eighth.
Leo Rosales (2-1) got the victory as the third Arizona pitcher of the night. He worked a perfect seventh inning and Juan Gutierrez survived a shaky ninth for his sixth save. Gutierrez allowed a run and had two men on base before retiring the final three batters of the inning to end the game.
Randy Flores (0-1) took the loss. He came on in the seventh and did not retire a batter while Arizona was taking the lead.
Copyright 2009 by United Press International.