Greinke allowed only a Ryan Howard clean single to left field to open the second innings, then retired his final 21 batters faced. Greinke walked none and struck out eight in his eight innings.
The Dodgers held the Phillies scoreless over the final 20 innings of the series.
One night after Clayton Kershaw was allowed to throw 123 pitches in his complete game shutout of the Phillies, Greinke was pulled after eight innings and just 94 pitches. The Dodgers haven't had complete game shutouts in back-to-back games since May 24-25, 1995 when Tom Candiotti and Pedro Astacio each pitched shutouts against the Mets.
The Dodgers tacked on two runs in the eighth inning, though had it stayed 4-0 manager Don Mattingly said he would have let Greinke start the ninth inning, at 94 pitches, at least until the game got to a save situation, for Kenley Jansen.
"If it stayed at four, I'd let Zack go back out, but once we got to six it didn't seem like it was worth sending him back out," Mattingly said. "I knew Joel Peralta needed some work."
Peralta pitched a scoreless ninth, just his second appearance in the last nine days.
Greinke lowered his ERA to 1.39 on the season, tops in the majors. It is the second-lowest ERA by a Dodgers pitcher before the All-Star break, trailing only Don Drysdale's 1.37 in 1968.
The last MLB pitcher to reach the All-Star Break with an ERA below 1.40 and at least 100 innings were Drysdale, Gibson and Tiant in 1968.— Dodger Insider (@DodgerInsider) July 10, 2015
"He's been impressive all year long. He came out of the gate throwing the ball well," Mattingly said. "His first couple years here, I felt like it took him a while to get him into his groove and then he got going, to where he is now."
That ERA by Drysdale was helped by his then-record scoreless streak of 58 innings, just as Greinke's current streak has lowered his. With the shutout on Tuesday, Greinke is up to 35⅔ consecutive scoreless innings, the fourth-best streak in L.A. Dodgers history, trailing only Orel Hershiser (59 innings in 1988), Drysdale (58), and Kershaw (41, 2014).
The Dodgers were held scoreless on offense by Severino Gonzalez until the fourth innings, when a two-out walk by Yasmani Grandal and Andre Ethier hit by pitch were cashed in by a double down the left field line by Yasiel Puig.
For Puig it was his first runs batted in since June 21. He was 10-for-51 (.196) since that last RBI.
Puig, who took extra batting practice before the game with hitting coach Mark McGwire, wasn't done. He also hit a two-run home run in the eighth inning, his first home run since June 10, snapping a streak of 106 plate appearances without a long ball.
The Dodgers' other two-run burst came in the sixth when Howie Kendrick led off with a single, followed by a rocket line drive by Adrian Gonzalez off the right field foul pole for two more runs. It was the fourth home run for Gonzalez in his last six starts.
Grandal had high praise for Greinke.
"He's almost been perfect, you know?" Grandal said. "For me it's like playing a video game. Do I want a curveball here, do I want a change up, pitch him backwards, or go straight up?"
Up next for Greinke is the All-Star Game on Tuesday, with the only question whether he will start for the National League. Mattingly was asked if he thought Greinke should start the midsummer classic.
"I do," Mattingly said. "It's pretty hard to be better than he is right now. I know Max Scherzer's been really good, so that's with all due respect. But that's my guy."
Home runs: Adrian Gonzalez (17), Yasiel Puig (4)
WP - Zack Greinke (8-2): 8 IP, 1 hit, 8 strikeouts
LP -(3-3): 5⅔ IP, 5 hits, 4 runs, 2 walks, 3 strikeouts