The big inning gave the Diamondbacks a 5-2 lead and they fought off the Dodgers down the stretch to snap a six-game losing streak.
Los Angeles put runners on first and third with nobody out in the eighth without scoring and the Dodgers then wasted two base hits in the ninth. Los Angeles had won three in a row.
After Upton tripled home the second and third runs in the sixth, Jason Kubel doubled him home. Kubel later scored on a wild pitch by Clayton Kershaw (6-5), who gave up all five runs on five hits over 5 1/3.
Josh Collmenter (1-2) picked up his first win of the season in six starts. He went six innings while giving up two runs, one earned, on six hits with six strikeouts.
J.J. Putz surrendered two singles in the ninth, one of which was erased in a double play, and escaped with his 15th save.