Cole Hamels tossed eight strong innings, striking out nine while allowing two runs on four hits, as Philadelphia took the rubber match of a three-game set with Arizona in 7-2 fashion on Wednesday.
Placido Polanco reached base in all five plate appearances, finishing 3-for-3 with a run batted in and two runs scored and Hunter Pence and Hamels (3-1) drove in two runs apiece for the Phillies, who finished their 10-game western road trip with a 5-5 record.
"Our starting pitching has been real good to this point. I look at it, we could've had a few more wins," Phillies manager Charlie Manuel said. "You see Hamels or [Roy] Halladay or [Cliff] Lee pitching and they give up two runs, we have to win those games."
Trevor Cahill (1-2) suffered the loss by allowing four runs on six hits and two walks with three strikeouts over 5 1/5 innings. Paul Goldschmidt and Jason Kubel knocked in runs in the losing effort, Arizona's seventh in nine games.
"I felt pretty good today, felt like my ball was moving," Cahill said. "I just couldn't put anybody away when I had to, and couldn't make that big pitch."
Polanco singled and moved to second on a passed ball in the first before scoring on Hunter Pence's soft grounder to left field. Pence then tried to score on Lance Nix's hit off Cody Ransom's glove, but was thrown out at home.
Juan Pierre opened the sixth inning with a single, moved to second on a walk to Polanco and third on a groundout. He came home on a wild pitch with Pence at the plate.
Pence's hit brought home Polanco, ending Cahill's afternoon. Craig Breslow spelled him and eventually gave up run-scoring singles to Carlos Ruiz and Hamels around another base hit and a walk before Pierre grounded out to end the five-run inning that pushed Philadelphia's advantage to 6-0.
Hamels had retired 18 straight batters since the first inning until Aaron Hill's single with one out in the seventh.
Singles to Justin Upton and Jason Kubel followed to bring home the Diamondbacks' first run, and Pete Orr's error allowed Upton to cross the plate two batters later, but Hamels escaped further damage with a bases-loaded double play ball.
The lefty struck out the side in the eighth to complete his line.
Arizona pitcher Joe Martinez made his major-league debut in the ninth inning, giving up an RBI double to Polanco before recording three consecutive outs.
Michael Schwimer, recalled from Lehigh earlier Wednesday in place of the injured Michael Stutes, tossed a perfect bottom of the ninth for Philadelphia.
In the first inning, Willie Bloomquist was picked off and caught stealing third, Hamels to Polanco to Hamels to Orr to Freddie Galvis to Nix...Carlos Ruiz tried to score from first base on a wild pitch in the second inning, but was throw out a few feet from home...Arizona had just four hits.