Green (3-2), who left his last start because of a mild left hamstring strain, gave up only three hits in eight innings.
The right-hander yielded only one hit after the first inning.
"I'm not throwing as hard as I normally do, but I'm getting more movement on my ball," Green said.
"He had a lot of movement on his fastball, and a real good changeup," said Manager Terry Francona, whose team has won three in a row. "He gave us a chance to come back."
Mark Leiter pitched the ninth for his fourth save.
The expansion Diamondbacks, who have lost 10 of their last 11, dropped to 4-19 on the road this year. Arizona pitchers walked a season-high nine.
After the game, the Diamondbacks closed the clubhouse door and had a 20-minute meeting.
"We talked about the things we have to refocus on," Manager Buck Showalter said.
The Phillies, who have won three in a row, broke a 3-3 tie in the seventh with help from reliever Gregg Olson.
Desi Relaford singled leading off and Green sacrificed. Relaford broke for third on a walk to Gregg Jefferies and scored when catcher Jorge Fabregas' throw to third sailed into the outfield.
"I think [Fabregas] was not expecting me to go and I think it caused him to rush the throw a little bit," Relaford said.
Olson then walked Mike Lieberthal and Bobby Abreu with two out and the bases loaded to force home two runs.
Arizona jumped out to a 3-0 lead in the first on rookie Travis Lee's three-run homer, his eighth.
The Phillies tied the score with homers in the first and second against starter Willie Blair.
Rico Brogna's two-run shot made the score 3-2 in the first, then Relaford tied the score with his third homer in the third.
(BEGIN TEXT OF INFOBOX / INFOGRAPHIC)
NEXT SERIES FOR DODGERS
WHO: Philadelphia Phillies
WHERE: Dodger Stadium
WHEN: Monday, 7 p.m., Tuesday, 7 p.m., Wednesday, 7:30 p.m., Thursday, 7 p.m.