The game was delayed by rain for 1 hour and 53 minutes after five innings, with Atlanta in front 4-1.
Kris Medlen, who gave up one run on four hits in five innings, picked up the win, while Nolasco (8-10) lost his fourth straight decision.
"If we're going to have fun, and we're going to win some games, I think our starters are going to have to do a better job," Miami manager Ozzie Guillen said. "The last couple of weeks, we've been six-innings, five-innings guys. I think we have better arms than what they're showing. A lot of balls, being behind in the count all the time. A lot of people on base."
In five innings, Nolasco gave up four runs on seven hits, with four walks and six strikeouts.
In the sixth inning, Atlanta's Tyler Pastornicky delivered a pinch-hit home run off of Miami reliever Dan Jennings, making a long night even longer.
Donnie Murphy put Miami in front with a home run in the first inning, but Nolasco had his second straight rough start against Atlanta.
The Braves responded with three runs in the first off Nolasco, and they pounded out 13 hits.
"When the team gives you a 1-0 lead, and you give up three, it kind of sucks all the energy right out of the team right off the bat," Nolasco said. "That's not what you're looking to do as a starting pitcher.
"Just a tough time right now, for me, and a lot of people. I don't think anyone would have envisioned this would be going on, but it is. We have to deal with it. We're just struggling right now. We'll figure it out and get 'em next time."
Miami hit into four double plays, and the game ended on Justin Ruggiano's 6-4-3 double play.
Atlanta has won seven straight, and improved to 8-2 against Miami.
The Marlins finished July with a 10-16 record, and they matched their season low by being nine games under .500 (47-56).
Twice in the last six days, Nolasco has lost to Atlanta. On July 25, the right-hander allowed six runs on eight hits in 5 1/3 innings.
"Those guys on the mound, are a little bit better," Guillen said. "Those guys on the mound have to do a better job because they know, our offense is not the one that's going to support them that much."
Less than four hours before the first pitch, the Marlins traded Edward Mujica to the Cardinals, and then dealt Gaby Sanchez to the Pirates, completing a hectic month of trading.
When the game got underway, McCann continued his success against Nolasco.
McCann's homer in the third inning was his seventh career shot off the Miami right-hander. That's the most any player in the big leagues has off Nolasco.
The Marlins gained some early momentum. Two batters into the game, they claimed the lead on Murphy's one-out home run to right field.
But Nolasco wasn't able to hold it very long.
Nolasco was tagged for three runs in a 34-pitch first inning, where he threw 18 balls, and walked two.
The right-hander gave up three hits, including a two-run single by Juan Francisco. McCann drove in a run on a groundout.
"Too many pitches," Nolasco said. "I thought I made some good pitches, here and there. But the bottom line was, that ball to Francisco, it was in, it was a good pitch. He did good to hit it up the middle, and I had to battle. Throwing way too many pitches. But I didn't give in. I just tried to gut it out as long as I could."
McCann struck again in the third inning, belting his 18th homer of the season to give Atlanta a 4-1 lead.
Jose Reyes had an infield single in the first inning, extending his hitting streak to 18 games, two shy of his career best.
Given a three-run lead, Medlen did his part to frustrate Miami.
"He's a baseball player, and he likes to compete," Braves manager Fredi Gonzalez said of Medlen. "He just happens to be a pitcher. I love the mound presence. I love him getting the ball, gets back on the rubber. Murphy hits a home run [in the first inning], and it doesn't even bother him. He's like, here, go get another one. I like that. I like the tempo he showed on the mound."