Nick Ahmed has long been labeled a good-fielding but light-hitting shortstop.
"It's not who I want to be," he said.
He put on a good show at the plate Friday night.
Ahmed had a career-best five RBIs and the Arizona Diamondbacks regrouped for a 9-8 victory over the Colorado Rockies after blowing a five-run lead.
Diamondbacks manager Torey Lovullo said Ahmed was hitting the ball well before he was hurt last year and those who discount his offense are wrong.
"He's constantly working, constantly adjusting and preparing for moments like today," Lovullo said, "and he deserves a moment like today."
Ahmed hit a three-run homer in Arizona's five-run first inning and an RBI single in the third. He added another run-scoring single off reliever Antonio Senzatela (0-1) in the fifth, giving the Diamondbacks an 8-7 lead after the Rockies had tied it with a five-run fourth.
Robbie Ray (1-0) got the victory despite allowing seven runs, six earned, and seven hits in five innings. He struck out eight, walked three and threw two wild pitches.
"I think he was in a little bit of a fistfight all night long," Lovullo said. "Nothing was quite simple for him. He never really caught a rhythm."
Charlie Blackmon, Ian Desmond and Gerardo Parra homered for Colorado, which lost 8-2 in the opener on Thursday night. Blackmon connected for a tying three-run shot and Parra also went deep in the fourth.
"Every game with the Rockies is a fight," Ahmed said. "No matter how man runs we're up we're never going to assume the game is over and we're always going to keep pushing runs across."
Brad Boxberger pitched a scoreless ninth for his first save as Arizona's new closer, striking out Trevor Story and Carlos Gonzalez to end the game. It was Boxberger's first save since 2015, when he led the American League with 41. He has been slowed by injuries since then.
He said he always knew he would get back in his old form.
"There's always an end to everything," Boxberger said. "So it was just a matter of battling back and getting to where I need to be."
Colorado trailed 7-2 after three innings but sent nine batters to the plate in the fourth.
After Parra's drive made it 7-4, Chris Iannetta singled and Senzatela put down what was intended to be a sacrifice bunt. Catcher John Ryan Murphy picked up the ball in front of the plate and threw it away trying to force Iannetta at second. The error left runners at first and third for Blackmon, who drove a 1-0 pitch over the wall in straightaway center.
Arizona scored five times in the first on A.J. Pollock's two-run double and Ahmed's first homer of the season. Desmond connected after Gonzalez's leadoff walk in the second, but Pollock led off the Arizona second with a triple to left-center and scored on Chris Owings' single.
After Jake Lamb walked, Ahmed singled Owings home and it was 7-2.
Archie Bradley, who threw 1 2/3 innings of hitless relief in Arizona's win on opening day, came on in the seventh and yielded Gonzalez's two-out RBI single, trimming the Diamondbacks' lead to 9-8.
"We did some things offensively that was in our realm," Colorado manager Bud Black said, "but we just didn't pitch well enough overall in the early part of the game to win this game."
Rockies starter Tyler Anderson lasted just 2 1/3 innings and was charged with seven runs and five hits with four walks.
"Tonight was uncharacteristic," Black said. "I can't explain it. He might be able to explain it better than I can but I saw a pitcher that couldn't locate the fastball."
Diamondbacks: RHPs Randall Delgado (strained left oblique) and Shelby Miller (Tommy John surgery) threw bullpen sessions on Friday. Delgado is on the 10-day DL, Miller the 60-day DL.
The new bullpen cart at Chase Field finally made a couple of appearances, but not with a pitcher in it. Instead, it twice delivered relievers jackets to the Arizona dugout.
Zack Greinke, whose start was postponed due to a minor groin problem, makes his season debut for Arizona and German Marquez goes for Colorado as the Diamondbacks try to complete the season-opening three-game sweep.