AP photo by Matt Slocum / Atlanta Braves second baseman Johan Camargo fields a ground ball during the second inning of Saturday's game in Philadelphia. Camargo's home run in the sixth provided Atlanta's only run in the loss to the Phillies, who have won five straight games to threaten the Braves' lead in the NL East.

Updated with more information at 9:20 p.m. on Aug. 29, 2020.

PHILADELPHIA — Rhys Hoskins had three hits, including a three-run homer, and Zach Eflin pitched seven strong innings to lead the Philadelphia Phillies to their fifth straight victory, 4-1 over the Atlanta Braves on Saturday.

Bryce Harper doubled and drove in a run for the Phillies, who pulled within two games of Atlanta for first place in the National League East Division. Philadelphia had most recently won five consecutive games in August 2018.

Eflin (2-1) allowed one run on four hits with eight strikeouts and no walks. He would have come out to start the eighth, but the game was delayed for 37 minutes due to rain with the Phillies batting in the seventh.

"He was ahead in the count, was spotting his fastball and had them on the defense," Phillies manager Joe Girardi said. "Today he had it all."

Johan Camargo homered for the Braves, and left-handed batter Freddie Freeman extended his hitting streak to 12 consecutive games with an opposite-field single that beat the shift in the ninth inning. Camargo snapped an 0-for-18 skid with his shot to the second deck in right with one out in the sixth.

Atlanta's Nick Markakis hit his 507th career double, passing Babe Ruth, and Braves center fielder Ronald Acuna Jr. robbed Harper of at least a double with a stellar diving catch for the final out of the seventh.

Josh Tomlin (1-2) gave up four runs (three earned) on five hits with two walks and a strikeout in 4 1/3 innings.

"He battled really well and did a good job other than the one at-bat," Braves manager Brian Snitker said.

Austin Riley missed a homer in the fifth for Atlanta when his drive to left hooked just foul, and he ended up striking out. Riley's foul was one of the few hard-hit balls hit off Eflin, who had his best outing of the season despite not feeling sharp beforehand.

"I honestly didn't feel that great in the bullpen before the game," he said. "That being said, I've felt good in previous outings and haven't had the line to show it. Baseball is a funny game."

Hoskins gave the Phillies a 4-0 lead with a three-run drive in the fifth, ending the day for Tomlin. Hoskins nearly homered in the third, but he settled for a double when his drive to right-center hit the top of the wall and bounced back into play.

"Anytime you can help the club win, it's a good day," Hoskins said.

Hoskins is 7-for-21 with three homers and six RBIs during the winning streak.

"We're starting to see the fruits of the hard work that he and (hitting coach) Joe (Dillon) have put in," Girardi said. "We love what he's doing."

Philadelphia got on the board in the first inning when Andrew McCutchen scored on Harper's sacrifice fly.

Brandon Workman pitched a scoreless ninth for his seventh save in eight tries this season.

The Phillies and Braves all wore No. 42 jerseys for the second consecutive day. After donning No. 42 on Friday in honor of Jackie Robinson Day, players were given the option to continue wearing it through the weekend.

Braves designated hitter Matt Adams did not return after striking out in the fifth. He fouled a ball off his left leg during the at-bat.

Atlanta outfielder Adam Duvall (sore left Achilles' tendon) was out of the lineup a day after getting hurt while beating out a single in the fifth inning of a 7-4 loss in 11 innings. Snitker said afterward that Duvall was available on Saturday and likely would be back in the lineup Sunday night.

Right-hander Jake Arrieta (2-3, 4.32) is set to take the mound for the Phillies in the conclusion of the three-game weekend set and 10-game season series. Right-hander Huascar Ynoa (0-0, 4.32) will start for the Braves.