Greinke yielded just two hits and two walks, allowing one run while striking out seven.
The former Cy Young Award winner also singled, raising his average to .347, and stole a base -- his second of the season, becoming the first Dodgers pitcher to record two swipes in a season since Orel Hershiser in 1987.
Puig's homer off Dale Thayer (2-5) in the sixth broke a 1-1 tie as the National League West-leading Dodgers completed a three-game sweep and took a fourth straight overall.
Ronald Belisario and Paco Rodriguez combined for a scoreless eighth and Kenley Jansen notched his 24th save for the winners.
Alexi Amarista provided the Padres' only RBI.