Puig negated Chase Utley's solo home run in the top of the inning that had put the Phillies up 4-3, and allowed the Dodgers to win their sixth straight.
Puig's key hit on an 0-2 offering from Justin DeFratus (2-2) came after he jumped at the wall to try to snare Utley's shot and his left elbow smacked the top of it before hitting the ground hard.
A.J. Ellis gave Los Angeles a little breathing room in the eighth inning with a sacrifice fly that brought home Matt Kemp, who had singled off Antonio Bastardo and stole two bases.
Zack Greinke (5-2) allowed 11 hits besides Utley's homer. He struck out five in seven innings. Kenley Jansen pitched the ninth for his seventh save.
Jonathan Pettibone went six innings for the Phillies, who were coming off back-to-back wins in San Diego.
Utley, who drove in two runs, finished with three hits, as did Ben Revere.
UPI horse racing weekend preview
Bo Jackson: I can't help Jameis Winston anymore