Cahill (2-3) stymied the Dodgers on two runs over seven innings, yielding six hits and three walks while striking out two.
Meanwhile, his three-bagger in the second inning erased a 1-0 deficit and put the Diamondbacks ahead to stay.
Paul Goldschmidt went 4-for-5 with three RBI, including two-run homer, and Cody Ross also went deep as Arizona pounded 15 hits in taking the opener of a three-game series.
Dodgers starter Chris Capuano (0-2) was roughed up for six runs (five earned) on eight hits in a four-inning effort as Los Angeles dropped a fifth straight.
Carl Crawford homered in the loss.
Costly malfunction causes beer flood at Boston-area brewery
Megyn Kelly: Santa Claus and Jesus are both white men