PITTSBURGH — Six weeks into his major league career, Zach Eflin is pitching like one of the National League's best starters.

Eflin threw his first shutout and second complete game in his eighth start and the Philadelphia Phillies beat the Pittsburgh Pirates 4-0 Friday night.

Eflin (3-3) had six strikeouts, allowed three hits and did not walk a batter as he threw 100 pitches for his second complete game in his past four outings. In the majors for just 39 days, the 22-year-old is one of only seven pitchers to have multiple complete games this season.

"Every pitcher doesn't want to come out of the game. I was able to stay ahead and get quick outs," Eflin said. "All four of my pitches were working today."

Cameron Rupp had a home run and three RBIs and Odubel Herrera had three hits and scored twice for the Phillies, who entered having lost four of five.

John Jaso had two of the Pirates' three hits, including their only one for extra bases (a leadoff double in the second).

Gerrit Cole allowed one run over six innings for Pittsburgh, which entered with the majors' best record since June 24.

Rupp drove in the game's first run in the sixth when Herrera scored on his single with the bases loaded and nobody out. Cole (5-6) escaped the remainder of the inning unscathed.

Still, he was lifted for a pinch hitter in the bottom of the inning after throwing 96 pitches, and the Phillies made it 2-0 off Arquimedes Caminero in the seventh. Andrew McCutchen misplayed Herrera's sharply hit ball into a double with two outs, and Andres Blanco drove him in with a single.

Rupp's homer came with Blanco on with two outs in the ninth.

"I thought the sixth inning was going to come back to haunt us when we didn't score," said Phillies manager Pete Mackanin, whose team had lost its past six at PNC Park dating to 2014.

"It was a good game for us; we haven't won a lot of games here over the last few years, so it was good to at least set the tone for this series."

Jaso twice advanced to second base, but no baserunner reached third against Eflin, who has allowed 11 earned runs over his past seven outings since being tagged for nine in his major-league debut June 14 at Toronto.

"He's not a 95-98 mph type of power pitcher, but he really knows how to pitch," Mackanin said. "We all saw that debut against the Blue Jays — he never got the ball down, he couldn't locate. But ever since that start, he's gotten better and better."

The closest the Pirates appeared to come to scoring was when Herrera made a leaping grab at the wall in centre on a ball Jung Ho Kang hit in the fifth.

Eflin faced 29 Pirates in collecting 27 outs.

"He kept the ball out of the middle, he changed locations, he changed velocity, kept it down," Pirates manager Clint Hurdle said. "It was a mix of everything."

PHILLIES ROSTER MOVE

A day after allowing three runs on five hits in two innings, RHP Daniel Stumpf was designated for assignment. Stumpf, who must be offered back to the Royals after being their Rule V draft choice this past off-season, served an 80-game suspension this season for violating Major League Baseball's policy against performance-enhancing drugs. RHP Severino Gonzalez was recalled from Triple-A for his second stint with the Phillies this season.

TRAINER'S ROOM

Phillies: Three innings after he was hit in the left wrist by a 96-mph fastball by Cole, OF Maikel Franco left the game during the fourth for what the team said were precautionary reasons. Franco said he felt pain when he made contact in singling in the third. He said his heavily wrapped wrist was "a little sore" after the game, but Mackanin said X-rays were negative and Franco did not rule out playing Saturday. Blanco replaced Franco at third base. Incidentally, Eflin hit the Pirates' No. 3 hitter, McCutchen, in the bottom of the first, drawing a warning to both benches from home plate umpire Tony Randazzo.

Pirates: A day after being a late scratch from the lineup because of flu-like symptoms, OF Starling Marte was back in left field and batting cleanup Friday.

UP NEXT

Phillies: RHP Aaron Nola (5-8, 4.41) is coming off an outing in which he pitched six shutout innings Monday against Miami.

Pirates: Hurdle indicated RHP Tyler Glasnow will make his second major league start Saturday. One of the game's top pitching prospects, Glasnow has a 1.94 ERA and 122 strikeouts in 102 innings for Triple-A Indianapolis.