Tyler Matzek and Jose Quintana dueled through the first three innings, with Matzek bending but not breaking in the second. He gave up an infield single and a walk, but retired the side in order in the first and third.
Quintana allowed a leadoff single to Charlie Blackmon in the first, but Blackmon was erased attempting to steal. Both starters struck out three.
"Everything was clicking," Matzek said. "I was staying over the rubber, I wasn't rushing. So I could kind of just keep the ball rolling. I didn't feel like I had to think or anything, I was just out there pitching."
The Rockies broke the scoreless tie in the fourth, with two walks and three singles in the inning. Drew Stubbs and Justin Morneau both drove in runs with base hits. Chicago bounced back with two of their own in the top of the sixth, with a double, two singles and a fielder's choice.
But Colorado got the last laugh in the bottom of the frame as Ryan Casteel, DJ LeMahieu and Matt McBride all drove in runs.
Right-hander Jon Gray, considered by MLB.com's Prospect Watch to be the Rockies' No. 1 prospect and the No. 17 overall in baseball, succeeded Matzek and turned in two shutout innings of his own.
Up next: Brad Penny gets the start for the White Sox against the Angels at Tempe, with Jeff Samardzija throwing a simulated game back at Camelback Ranch. Penny is one of the hurlers in competition for the long relief or spot-starter slot in the injury absence of Chris Sale.
Joey Nowak is a reporter for MLB.com. Follow him on Twitter at @joeynowak. This story was not subject to the approval of Major League Baseball or its clubs.