Yasiel Puig had three triples and a double to lead a rout behind Zack Greinke, who struck out 10 in seven innings of an 8-1 win over the Giants that trimmed the Dodgers' deficit in the NL West to a half-game.