In the eighth inning, Ryan Howard and Marlon Byrd hit back-to-back singles with one out. Byrd's hit looked deep enough to allow pinch-runner John Mayberry Jr. to get to third base, but left fielder Tony Campana got to the ball quickly and prevented Mayberry from taking the extra base.
The play likely saved a run, as D-backs reliever Brad Ziegler got both Domonic Brown and Carlos Ruiz to ground out to first base and end the inning.
Ziegler has 10 straight scoreless appearances, a total of 9 2/3 innings.
"For me, that's a first-to-third play, and it might have even been a double for Byrd, really," Sandberg said of Mayberry on the bases. "With his [Campana's] arm strength and being up on the warning track, we have a pinch-runner in there to go first to third."
With Howard out of the game, Sandberg didn't have his bat in the ninth, when Mayberry -- batting in Howard's spot -- struck out looking with runners at first and second to end the game.
"We're trying to get runs in the eighth. We've got to score," Sandberg said. "I put a runner in there to try and tie the game up in the eighth on a double or a first-to-third type of play."
The D-backs got a big insurance run in their half of the eighth on A.J. Pollock's solo home run off reliever Jake Diekman to give them a 5-3 lead. The Phillies came back with a run off Arizona closer Addison Reed in the ninth, as Rollins singled in Ben Revere from second base with two out.
After Rollins stole second base, Reed intentionally walked the hot-hitting Chase Utley and struck out Mayberry. It was Reed's sixth save.
"Once again, if we have some better base running, then Diekman won't even be in there with a tie game, potentially," Sandberg said.
Three singles and a walk to Cody Asche plated the Phillies' first run of the game after they were unable to advance more than one runner past first base in the first six innings. Pinch-hitter Tony Gwynn Jr. hit a sharp ground ball to short that bounced off the D-backs' Cliff Pennington and into shallow center field, allowing two more runs to score.
Pennington was charged with an error and Gwynn was credited with one run batted in. The Phillies had runners on first and second with one out after manager Ryne Sandberg challenged an out call at second on Asche and the call was overturned with replay.
Asche overslid the bag on Gwynn's hit but umpires ruled that he got his hand in under the tag from second baseman Aaron Hill after Asche was originally called out.
However, D-backs reliever Randall Delgado retired the side on a fielder's choice and a fly out.
"I'm going to go out there and put it in the umpire's hands, and he was willing to check it out right away," Sandberg said when asked why he challenged the call. It was late in the game and his team trailed, another reason Sandberg took a chance.
Philadelphia (11-12) had won four of its previous five games to get back to .500. The Phillies struggled against Arizona starter Josh Collmenter (1-2), who blanked them on four hits over six innings with five strikeouts and no walks.
"We don't have a lot of history with him. He's a little funky, over the top [with his delivery]," Sandberg said. "He was throwing cut fastballs, both sides of the plate. But our guys really didn't get a look at it until the third time through the order."
Hill hit a two-run home run in the fourth inning and ripped a ground-rule double for another RBI in the fifth to pace the Arizona offense against Phillies starter Roberto Hernandez (1-1).
Hernandez got through six innings and allowed four runs on seven hits. He walked two.
"I tried to keep that one down," Hernandez said of the ball Hill hit. "It just got up."
Howard said Collmenter executed his game plan.
"He stuck to it pretty well and made pitches, hit his spots. That was key," Howard said.
The D-backs won their third straight game to improve to 8-18.
"They're all important," manager Kirk Gibson said. "We haven't played well. We know we're capable of playing better. We all expected better so it's good to have a little streak going right now."