Emmanuel Rivera added two hits and Ketel Marte had a triple RBI. Lourdes Gurriel Jr. doubled in the eighth to extend his hitting streak to 16 games.
Arizona has won four straight.
Diamondbacks starter Ryne Nelson threw six good innings and allowed three hits and a run with four strikeouts and no walks. Jose Ruiz (2-0) took the win in relief, and Miguel Castro threw a scoreless ninth for his fifth save
Kody Clemens had a brace and two RBIs and Bryce Harper added two hits for the Phillies
Alec Bohm participated with an RBI single.
Matt Strahm lasted two innings after being pressed into a starting spot for the Phillies. Strahm allowed three hits and two runs with three strikeouts and no walks
Seranthony Dominguez (1-2) took the loss.
THE Diamondbacks took a 4-3 lead in the eighth inning when Carroll curled an RBI single to leave Dominguez. Arizona continued to load the bases, but Geraldo Perdomo fell short against Gregory Soto to end the threat
With runners on first and second and two outs, Dominic Fletcher landed a dive to center court on a line drive from Kyle Schwarber in the home half of the eighth.
THE Diamondbacks took a 2-0 lead in the second when Moreno kicked an imposing two-run home run to center left
Clemens hit an RBI brace late in the second to score JT Realmuto from the opening goal and cut the deficit to 2-1.
In the third, Arizona took a 3-1 advantage thanks to an RBI triple from Marte.
Nelson combined to throw just 17 total pitches in the fifth and sixth.
Recently acquired Dylan Covey retained the Phillies within striking distance, as he allowed five hits and a run in five innings of relief with six strikeouts and a walk
Harper walked to open seventh and Nick Castellanos doubled to put the runners up for second and third. Clemens dug in early on picking a defender but struck in a run to close at 3-2. Bohm then came on as a pinch hitter and grounded an RBI single to the center to tie the game at 3.