Home runs by Tucker Barnhart and Joey Votto provided the run support.
Freddie Freeman homered in the first inning off DeSclafani. It was his team-leading 17th of the year, an opposite field drive.
DeSclafani scattered six hits through five but Atlanta scored on a leadoff double by Erick Aybar and a two out single by Chase d'Arnaud. He finished with eight innings, allowing two runs on seven hits, no walks.
"I didn't feel that great," DeSclafani said. "I didn't have a strike out pitch today. They were putting the ball in play early and we played good D."
DeSclafani hasn't issued a walk in his last three games, covering 20 innings.
"I don't give in if I'm behind in the count," DeSclafani said. "That's what it comes down to. I try to keep throwing strikes and try to get back in the count of get them to put the ball in play."
The Reds rallied against Harrell in the sixth. Jay Bruce and Eugenio Suarez opened the inning with singles. Both advanced on Brandon Phillips fly to deep right. Jose Peraza's second hit of the game. Suarez beat the tag by catcher A.J. Pierzynski, who took the strong throw by Ender Inciarte. The call by homeplate umpire Angel Hernandez was upheld by a three minute, 10 second review. Barnhart's fourth home run gave the Reds a two-run lead.
"Tucker allowed Tony to stay in the game," Bryan Price said. "If he doesn't hit that home run, I felt I was going to have to pinch hit for him."
"That's three times Tucker has gotten a big hit when I was pitching," DeSclafani said.
'I told him he needs to pitch more," Barnhart said. "I always seem to get hits when he's pitching. He comes right after hitters. He commands the strike zone with all four of his pitches. That's overwhelming for a hitter. You don't get a chance to breath."
Votto's 16th home run off Ian Kroll with Billy Hamilton on base in the seventh, stretched the lead to 6-2.
Adonis Garcia hit his seventh home run off Ross Ohlendorf, leading off the ninth.