DENVER -- Ketel Marte put on a power display from both sides of the plate.
Marte homered from opposite sides for the third time this season and the Arizona Diamondbacks fended off Colorado's late rally to beat Rockies 10-9 on Friday night.
"As a switch hitter, the night was a dream come true," Diamondbacks manager Torrey Lovullo said. "We are watching a player that is pretty special."
Marte said he has developed a comfort level from whichever side he swings the bat.
"I feel great at the plate from both sides," he said. "It is a result of working hard. When I feel good out there, I can do something special."
Adam Jones had three hits, including a homer, and Eduardo Escobar also went deep for Arizona, which has extra-base hits in all 32 of its games this season. Robbie Ray (2-1) pitched into the sixth inning and allowed five runs — only one of them earned, and the Diamondbacks had to wriggle out of a ninth-inning jam to preserve the win.
"We had good at-bats throughout the game," said Colorado's Nolan Arenado, who had three hits. "They just had more. That's just kind of how it went, so it was a tough one but we showed a lot of fight. That was good."
Ryan McMahon hit a pinch homer for the Rockies and Charlie Blackmon added a two-run shot in the ninth off Andrew Chafin. Greg Holland, a former Rockie, relieved and Colorado loaded the bases, but produced one more run on David Dahl's RBI fielder's choice. Holland struck out Ian Desmond and Chris Iannetta for his eighth save, stranding the tying and go-ahead runners, though he allowed a run to end his 15-game scoreless streak.
"We saw it when Greg was here. He knows how to get out of situations," said Arenado, who singled off Holland to help load the bases. "We were fortunate to have him on our team when he was doing it because it was fun to watch. It's not very fun anymore."
Marte, who had three hits and drove in four runs, homered from the right side off lefty Tyler Anderson (0-3) in the third and from the other side in the seventh off right-handed reliever Seunghwan Oh. It was the ninth time a Diamondbacks player homered from both sides of the plate in a single game — including the three this season by Marte. He also did it on April 5 against Boston and April 24 against Pittsburgh.
Marte has accomplished the feat a franchise-record four times overall.
Garrett Hampson singled with two outs in the Rockies' sixth and Ray was relieved by T.J. McFarland, whose 1-2 offering was driven over the center field fence by McMahon for his third career pinch homer.
Jones homered off Anderson to lead off the Diamondbacks' fifth as Arizona reclaimed the lead, 5-4. Marte singled to chase Anderson and Escobar homered off a 1-1 delivery from reliever Bryan Shaw.
A successful replay challenge by Colorado manager Bud Black that uncovered an error followed by a second fielding error by Arizona opened the door for the Rockies to tie it up with four runs in the fourth — all unearned.
Mark Reynolds initially was ruled out on a force play at second, but a replay review showed shortstop Nick Ahmed had missed the bag, allowing the Rockies to load the bases with one out. Desmond's bouncer to third kicked off the glove of third baseman Escobar, allowing a run to score and Desmond to reach. Iannetta followed with an RBI single, then Hampson singled to drive home two more runs.
Arizona led 4-0 on Wilmer Flores' two-run double in the second and Marte's first homer, a two-run shot in the third.
The Diamondbacks recalled OF Tim Locastro from their top farm club, Triple-A Reno, filling the spot left vacant by the optioning of C Caleb Joseph. ... RHP Matt Koch was outrighted to Reno after being designated for assignment last Sunday.
Diamondbacks: RHP Taijuan Walker threw a 30-pitch bullpen session and took another step toward an anticipated return midway through this season. He underwent Tommy John surgery in April 2017.
Rockies: INF Daniel Murphy was not in the starting lineup due to lower back soreness. He experienced soreness after Wednesday's game at Milwaukee. He had been scheduled to rest Thursday when the Rockies played a day game, but his back soreness kept him out until a pinch-hitting appearance in the ninth. ... C Drew Butera was designated for assignment after the team reinstated Iannetta from the 10-day-injured list. Iannetta was placed on the IL two weeks ago with a right lat strain. ... LHP Chris Rusin, on the IL with a mid-back strain since March 27, threw a simulated game in a major step toward his return. ... LHP Jake McGee, placed on the IL on April 2 with a left knee sprain, is slated to throw a bullpen session Saturday and pitch to batters as part of a simulated game Tuesday.
Diamondbacks: RHP Luke Weaver (2-1, 3.73 ERA) is making his fourth career appearance and third start against the Rockies. He'll enter the game 0-1 with a 13.50 ERA against Colorado.
Rockies: LHP Kyle Freeland (2-4, 4.81 ERA) has gone 1-1 with a 5.73 ERA in two previous starts this season at Coors Field.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP—Sports