Trailing 3-1 in the ninth inning, the Diamondbacks scored twice to force extra innings. Johnson singled, and Chris Young walked. Colorado closer Huston Street struck out the next two batters and then had Miguel Montero at a 1-2 count before he doubled to tie the game.
"After the way we lost the series against Cincinnati, it was nice to have a win like that," Johnson said. The Diamondbacks were swept by the Reds earlier in the week. "We had to fight back because we didn't get too many hits and no chances to get many runs."
Montero had been struggling, with just four hits in his previous 22 at-bats before his double.
"Miggy's been pressing on himself lately, and I've been talking to him about that," Diamondbacks manager Kirk Gibson said. "It's just that you've got to relax and play, and the thing about the game is you can't take the previous at-bat. ... We've been talking about how you've got to get rid of it."
Street blew his fourth save of the season and spoiled a good performance from starter Esmil Rogers, who scattered six hits over a career-high 6 1/3 innings.
"I need to be able to finish guys. I had every single hitter in the inning two strikes, except for the guy I intentionally walked. Two of them 0-2, and they ended up getting on base," Street said. "It's just frustrating. There's just no two ways about it."
With one out in the 10th, Upton singled and then Johnson followed with a double into the gap in left-center. The speedy Upton easily beat the throw to the plate.
The Rockies scored the game's first three runs, the second after Eric Young beat out an infield hit and took third base when Diamondbacks pitcher Ian Kennedy's pickoff attempt bounced down the line for an error. Fowler doubled in Young and scored on Tulowitzki's double as the Rockies plated two runs in the fourth inning.
Colorado failed to put the game away, leaving 12 guys on base.
"We had an opportunity to open the game up, but we were unable to do that, and we needed one strike to win the game, and we weren't able to do that," Rockies manager Jim Tracy said.
The Diamondbacks cut the deficit to 3-1 when Adam LaRoche's RBI single scored Upton.
Rockies outfielder Carlos Gonzalez is still sore and unable to play in the field after running into the wall for a ball at Dodger Stadium on Wednesday night. Tracy said Gonzalez is still day-to-day The Rockies designated left-handed reliever Randy Flores for assignment Friday and recalled infielder Jonathan Herrera from Triple-A Colorado Springs. Flores, a nine-year major-league veteran, is 2-0 with a 2.96 ERA in 47 appearances out of the bullpen, while Herrera is on the 25-man roster for the second time this season. Pitcher Matt Daley, on the 60-day DL with a right shoulder injury, threw a bullpen session in Denver on Friday, and pitcher Jeff Francis threw long toss. Francis, who went on the 15-day DL with left shoulder soreness last week, could throw off the mound Saturday.