PHILADELPHIA -- Merrill Kelly is pitching more like an ace than a 30-year-old rookie.
Kelly tossed three-hit ball over 7 2/3 innings, and the Arizona Diamondbacks beat the Philadelphia Phillies 2-0 on Wednesday night.
Kelly (7-6) struck out five before departing when Bryce Harper entered the game as a pinch-hitter. Andrew Chafin retired Harper on two pitches and Greg Holland finished the three-hitter, earning his 10th save in 11 tries.
Kelly has allowed just two runs in his last three starts, working 22 1/3 innings and winning all three. He spent the previous four years in Korea after never pitching above Triple-A in four seasons in Tampa Bay's system.
"We felt he was capable of this," Arizona manager Torey Lovullo said. "We've loved every aspect of his game and look for it to continue."
Kelly, who signed a two-year deal with the Diamondbacks as a free agent, has stepped up since earning a spot as the No. 5 starter.
"We've been playing really well," he said. "I'm just trying to be good each start, do my job, be better than the start before."
The Diamondbacks won another series in Philadelphia and are 11-2 against the Phillies on the road in their last 13 games.
"Come to Philly and beat them on their turf, you're doing something right," Lovullo said.
Philadelphia's Zach Eflin (6-6) allowed two runs and five hits in eight innings, tying a career high with nine strikeouts.
"Eflin was just as good (as Kelly) and deserved a better outcome than he got," Phillies manager Gabe Kapler said.
The Diamondbacks scored both runs in the fifth when Adam Jones, Eduardo Escobar and Christian Walker hit three straight singles to start the inning. Walker's liner to right scored Jones and Escobar scored on Nick Ahmed's sacrifice fly.
Nick Williams, starting in place of Harper, got Philadelphia's first two hits. He lined a double to right in the third and singled on a soft liner to right in the fifth. J.T. Realmuto had an infield single in the seventh, and that was it for the Phillies.
Philadelphia entered the game tied with Atlanta for first in the NL East and would fall to second for the first time since April 25 if the Braves beat the Pirates.
At 2 hours, 16 minutes, it was Philadelphia's quickest game of the season, wrapping up one minute faster than last Saturday's victory over Cincinnati.
First base umpire Ed Hickox had consecutive calls overturned by video review in the seventh. Realmuto was called out after his grounder to third, but the Phillies challenged and he was safe. Then Scott Kingery was called safe after Ahmed made an excellent play on a grounder in the hole at shortstop. But Arizona won the challenge.
Harper wasn't in the starting lineup for the first time this season. Kapler wanted to give the slugger extra rest with a day off Thursday before the Phillies begin a stretch of 17 straight games against division opponents. Harper had a seven-game hitting streak snapped and was batting .301 with four homers and 19 RBIs in the last 23 games.
Diamondbacks: RHP Jon Duplantier was placed on the 10-day injured list with right shoulder inflammation. RHP Stefan Crichton was recalled from Triple-A Reno.
Phillies: RHP Edubray Ramos was activated from the IL and LHP Austin Davis was sent to Triple-A Lehigh Valley. RHP Pat Neshek and OF Roman Quinn could return from the IL this weekend.
Diamondbacks: RHP Zack Greinke (7-2, 2.87 ERA) starts the opener of a four-game series at Washington on Thursday.
Phillies: After an off day, RHP Nick Pivetta (4-1 4.93) pitches the opener of a three game series at Atlanta on Friday.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP—Sports