PHOENIX -- An All-Star in 2017, Jake Lamb missed more than half of last season with a shoulder injury that required surgery. Then early this season, he strained his quadriceps and missed almost three months.
But Lamb stayed the course despite the frustration, and it paid off on Saturday night.
He hit his first home run in more than a year, leading the Arizona Diamondbacks to a 4-2 win over the Colorado Rockies.
"It's been really, really difficult," Lamb said of his long road to recovery. "I've just been trying to be as positive as possible through all the ups and downs. Because I know what kind of player I can be."
Lamb, on the injured list from April 5 to June 26, broke a 1-1 tie in the sixth inning with a two-run shot that eluded Rockies left fielder David Dahl's glove and bounced off the top of the left-field wall. Arizona scored three runs in the inning.
"I was just trying to stay as relaxed as possible," Lamb said. "For sure, it feels good to get the first homer, but just trying to put quality at-bats together for a good stretch."
Robbie Ray (6-6) held the Rockies to two hits in six innings, striking out eight despite five walks. He also drove in a run with a two-out single in the fourth inning.
Daniel Murphy and All-Star Trevor Story homered for the Rockies, who have lost five straight. Jon Gray (9-6) allowed three runs on eight hits in five innings.
Murphy's seventh of the season landed in the pool deck beyond the right-field fence. Story homered to center field in the eighth inning off reliever Yoan Lopez, his ninth career home run at Chase Field. That's the most at the ballpark for any visiting player since 2016.
"Tough night for the group on offense. We just didn't get a lot of hits, didn't swing the bats great, didn't get a lot of baserunners," Rockies manager Bud Black said.
Gray worked out of a couple of jams in the second and third innings, but couldn't escape the fourth unscathed. Adam Jones led off with a double, and two outs later, Ray punched a single to left field to tie the game.
"Who thinks it's a good idea to throw fastballs away to a pitcher, giving him a chance?" Gray said. "A lot of mistakes. I am not happy about it."
The Rockies loaded the bases with two outs in the fifth after Nolan Arenado was intentionally walked, but Ray got Dahl to ground out.
In that inning, the Rockies had runners on second and third with one out when Charlie Blackmon was given a double on a play during which Diamondbacks center fielder Ketel Marte ran in front of Tim Locastro in left field and misplayed the flyball off his glove.
"You've got to pick up your teammates in that situation," Ray said. "Every time something like that happens, you just want to pick up your guys and let them know, 'I've got your back.'"
Jones singled to start the bottom of the sixth before Lamb connected for his first home run since June 25, 2018. Later in the inning, Nick Ahmed singled, stole second base and scored on Carson Kelly's single.
The Diamondbacks turned to Greg Holland, who blew back-to-back save chances earlier in the week but got a vote of confidence to remain the closer from manager Torey Lovullo, in the ninth inning. Holland put the tying run on base twice, but struck out pinch hitter Ryan MacMahon for his 13th save.
"He learned something from the past couple of outings," Lovullo said of Holland. "I felt like there was some crucial moments where he stood up there and said, 'I'm on this and I'm going to make some pitches to make good things happen.'"
Diamondbacks pitcher Zack Greinke will not pitch in the All-Star Game next week, Lovullo confirmed. Greinke is electing not to participate due to personal reasons.
Greinke earned his 10th win of the season Friday night with seven scoreless innings against the Rockies. The six-time All-Star and former Cy Young Award winner was replaced for this year's game by Felipe Vazquez of the Pittsburgh Pirates.
HERE'S THE STORY
Story made the game's best defensive play, diving to his left to take a hit away from Ahmed and flipping the ball to second base to start a double play to end the seventh inning.
Rockies: RHP German Marquez (8-3. 4.38 earned run average) gets the start Sunday against Arizona. He's 1-1 with a 3.67 ERA at Chase Field over seven games.
Diamondbacks: LHP Alex Young makes his Chase Field debut on Sunday. He won his major league debut in San Francisco on June 27 and has also appeared in one game in relief.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP—Sports