Greinke surrendered one run on two hits, striking out seven and walking two, as the Dodgers swept the Padres to stretch their lead atop the National League East to 11 1/2 games.
Puig meanwhile had two hits and a homer, continuing his strong form since being benched by manager Don Mattingly for his lackadaisical attitude.
David Ortiz drove in three runs as the Boston Red Sox won 7-6 to complete a three-game sweep of the Chicago White Sox.
Jacoby Ellsbury also drove in a pair and Stephen Drew homered for the Red Sox, whose American League East lead stretched to 5 1/2 games, but there was controversy in the fifth inning when a seemingly good play by Chicago third baseman Conor Gillaspie was ruled as a dropped catch, resulting ultimately in a two-run frame.
The Tampa Bay Rays lost further ground on the Red Sox as they were beaten 5-1 by the Oakland Athletics on the back of home runs from Coco Crisp and Stephen Vogt.
AJ Griffin fanned seven in seven innings of one-run ball for the Athletics, who swept the Rays and moved within a game of the Texas Rangers in the AL West.
Josmil Pinto sparked a three-run fifth in his Major League debut as the Minnesota Twins beat Texas 4-2.
Joe Kelly hurled six innings of one-run ball as the St Louis Cardinals climbed back into a share of the NL Central lead with Pittsburgh by beating the Pirates 7-2.
Matt Holliday and David Freese each drove in a pair.
Mike Aviles launched a grand slam in the ninth to break open a scoreless game and lift the Cleveland Indians to a 4-0 win over the Detroit Tigers.
JJ Hardy and Adam Jones each crushed three-run homers as the Baltimore Orioles scored all their runs in the seventh to rally from three behind for a 7-3 win over the New York Yankees.
Jayson Werth's go-ahead RBI double capped a three-run rally in the eighth as the Washington Nationals beat the New York Mets 6-5.
James Shields fanned nine in seven scoreless innings as the Kansas City Royals beat the Toronto Blue Jays 5-0.
JB Shuck's go-ahead bases-clearing double helped the Los Angeles Angels to a 5-3 win and a sweep of the Milwaukee Brewers.
Brett Oberholtzer hurled a four-hit shut-out as the Houston Astros beat the Seattle Mariners 2-0 while the Miami Marlins saw off Atlanta 7-0 to end the Braves' six-game winning streak.
Todd Helton had his 2,500th career hit in the Colorado Rockies' 7-4 win over the Cincinnati Reds, the Chicago Cubs beat the Philadelphia Phillies 7-1 and the San Francisco Giants were 8-2 winners over the Arizona Diamondbacks.