Hahn (6-6) improved to 4-1 over his last six starts after giving up one run on four hits. He walked two and struck out six.
Tyler Clippard retired the final four hitters for his 14th save.
Chad Bettis (4-3) allowed three runs on seven hits and four walks in 5 2-3 innings.
Butler led off the third with a shot into left field. Rafael Ynoa slammed into the wall and was shaken up, allowing Butler to chug into third, his first three-bagger since August 2012.
Butler scored on Sogard's sacrifice fly, and hit an RBI single in the fifth. Burns tripled leading off third and scored on Reddick's double.
Rockies: SS Troy Tulowitzki was given a routine day off because of the quick turnaround from Tuesday night. Manager Walt Weiss never thought about using him as a DH. "I brought it up to him in Houston and he didn't like it," Weiss said. "I didn't bother him this time."
Athletics: Ace Sonny Gray spent the night in a hospital with severe gastritis, a stomach ailment that keep him from making the start Tuesday night. "This wasn't a minor thing," manager Bob Melvin said. "We wanted to make sure he was hydrated." Melvin is unsure if Gray will be ready for his next on Sunday. Chris Bassitt will start if Gray can't go.
Rockies: LHP Chris Rusin (3-2, 4.69) makes the start in Thursday night's series opener at Arizona. He'll be facing the Diamondbacks for the first time in two years. He's 2-0 with a 2.70 ERA against them in two previous starts.
Athletics: LHP Scott Kazmir (4-5, 2.79) starts against the visiting Seattle Mariners on Thursday night. He's 2-2 with a 2.31 ERA over his past six starts and 4-0 with a 1.09 ERA in six starts against the AL West.