"I was fighting myself early on and trying to make too perfect a pitch," said Hudson, who needed more than 60 pitches to escape the first three innings. "Then I calmed myself down and I got into it."
Hudson added an RBI single for the Diamondbacks, who have won 10 straight home games and nine of 13 against the Rockies. Arizona has allowed two runs or fewer in each game of the winning streak, tied with Milwaukee for the longest such run this season and one shy of the franchise record set in 2002.
"We're all feeding off each other," Hudson said of Arizona's starters. "We want to go out and top each other."
Hudson (14-9) pitched out of a second-inning jam, putting runners on second and third with one out. He retired his final 11 batters.
"He struggled early when he couldn't get any rhythm," Diamondbacks manager Kirk Gibson said. "He was fortunate to get through the middle of the order with runners in scoring position in the early innings."
Hudson scattered three hits -- all singles -- and walked three while striking out eight to earn his second straight win.
"We had a chance for some momentum in the early part of the game," Rockies manager Jim Tracy said. "(Kevin) Kouzmanoff just missed in the second inning of putting three up there for us. Then we missed in the second and third, one-out situation after the runners tagged up. Then Daniel Hudson settled in and we weren't able to do much offensively."
J.J. Putz came on with the bases loaded in the ninth and got the final two outs for his 34th save in 38 tries.
The Rockies had four hits total en route to their third loss in four games.
"Through the first six innings we stranded six runners," Tracy said. "That has been a downfall for us all season."
Roberts gave the Diamondbacks a 1-0 lead when he drove White's third pitch into the stands in left for his third career leadoff home run and Arizona's sixth this season.
"I'll take anything but that'll work," Roberts said.
White and Hudson traded zeros until the sixth.
Aaron Hill singled and White hit Justin Upton in the middle of the back with a fastball. Montero then singled to right, scoring Hill to make it 2-0. Goldschmidt, in the midst of a 2-for-11 skid, doubled off the wall in right to score Upton and advance Montero to third. White intentionally walked Geraldo Parra to set up the double play one out later.
But McDonald singled into the hole at shortstop and Hudson looped a single into left to give Arizona a 5-0 lead.
Upton has been hit by pitches 15 times, second in the NL to Washington's Danny Espinosa.
"It doesn't go unnoticed," Hudson said. "I know the book is you have to pitch him inside but guys had better start hitting their spots in there."
White, making his second start since he was acquired by Colorado from Cleveland on July 31 in the deal for Ubaldo Jimenez, allowed five runs and seven hits over six innings. He walked six, matching a season-high, and struck out three.
"After working so hard to get out of the first inning and the three walks I got comfortable and got in a groove there," White said. "That was the best I felt since coming back (off the disabled list while with Cleveland). I felt like I had great stuff tonight and that is the frustrating part."
Arizona pitchers lead the majors with 51 hits and 30 RBIs. Upton stole second in the first inning to become the third Arizona player to reach 20 home runs and 20 stolen bases in the same season twice. Iannetta was shaken up briefly in the sixth when Parra bowled him over with a pop-up slide, but remained in the game. Rockies RHP Aaron Cook will be making his 22nd career start against Arizona on Tuesday. Cook beat the Diamondbacks on July 22 in Chase Field. LHP Wade Miley will look for his second straight win in his third career start for the Diamondbacks on Tuesday. He scattered five hits and four walks with four strikeouts over six scoreless innings against the Nationals on Aug. 25.