After scoring a season-high 19 runs Wednesday night, the Rockies were held in check by Arizona starter Robbie Ray for the first five innings before finally breaking through in the sixth.
Ray was replaced by Silvino Bracho with one out in the frame after hitting Carlos Gonzalez and walking Chris Iannetta. Bracho allowed a single to Parra to tie the game, and Tapia gave Colorado a 2-1 lead with a single off Andrew Chafin. Parra, who went to third on Tapia's single, scored on DJ LeMahieu's sacrifice fly.
Story hit a solo homer to right and Gonzalez had an RBI single in the seventh.
Before that, Ray (3-2) was sharp when needed. He struck out Ian Desmond to end a threat in the third. Two innings later, after LeMahieu led off with a single, he struck out Charlie Blackmon, Nolan Arenado and Story.
Ray wound up allowing two runs on five hits and three walks in 5 1/3 innings. He struck out eight. Freeland also lasted 5 1/3 innings, giving up a run on six hits and a walk with four strikeouts.
The Diamondbacks, as they did Wednesday, scored in the first inning. Freeland hit leadoff hitter Jon Jay, and one out later, Goldschmidt and A.J. Pollock hit singles, with Pollock driving in Jay.
Freeland allowed one other hit until Souza led off the fourth with a triple, and the lefty then struck out the side to strand the runner at third.
Freeland escaped more trouble in the fifth when Pollock drove a ball to deep left that was knocked down by the strong wind blowing in, robbing the Arizona center fielder of a two-run homer.
Arizona squandered another scoring chance in the sixth. Souza led off with a ground-rule double, and after Freeland was replaced by Oberg, Souza moved to third on a passed ball.
John Ryan Murphy hit a scorcher to Arenado at third, and Arenado threw out Souza at home.
--Field Level Media