ATLANTA -- Cole Hamels felt as well as he has all season, and it showed.
"Things felt good in the bullpen leading into the game, and things transpired from there," he said. "But I definitely understand how difficult it is to reach that type of level."
Hamels (4-5) won for the second time in three starts, giving up one run, striking out nine and walking none. He threw 71 of 95 pitches for strikes.
Rollins' 12th homer, coming off reliever Shae Simmons (1-1), made it 2-0 in the seventh.
Atlanta, which had a three-game winning streak snapped, cut its deficit to 2-1 in the seventh inning on Chris Johnson's RBI double. The Braves are tied for first place in the NL East with Washington.
Grady Sizemore reached base four times, going 3 for 4 and scoring on Rollins' homer to help the last-place Phillies end a three-game skid.
"Mentally it was pretty clear, and everything just felt really easy, just feeling that last touch of the baseball," Hamels said. "(It's comforting to have) a good understanding of where it's going to go as soon as it leaves your hand."
Hamels made 50 of his first 65 pitches for strikes before pinch-hitter Tyler Pastornicky singled in the sixth.
Braves starter Aaron Harang pitched six scoreless innings, allowing five hits and three walks with five strikeouts. The right-hander, who had won his last four starts, has a 2.18 ERA in his past five outings.
Hamels, 3-3 with a 1.78 ERA in nine road starts this year, received a no-decision in Atlanta on June 16 despite pitching seven scoreless innings in Philadelphia's 13-inning victory.
Hamels improved to 15-8 with a 3.34 ERA in 31 starts and one relief appearance against the Braves. Ben Revere pinch-hit for him in the eighth.
The left-hander had such strong command of his fastball that he had little need to use his changeup.
"I know that's kind of my out pitch, but when you're not even able to go to your best pitch and you're getting them out ahead," Hamels said, "the confidence just kind of builds from there."
Braves manager Fredi Gonzalez could tell early that Hamels was going to be tough.
"It's not a straight fastball," Gonzalez said. "It sinks and it cuts a lot to the right-handed hitters, and it's not an easy at-bat. He did that against us."
Phillies manager Ryne Sandberg unsuccessfully challenged that Johnson was thrown out at second base in the seventh. Johnson, who drove in Upton from second, stretched a single into a double by beating Chase Utley's tag attempt.
In 117 career games at Turner Field, Rollins has 11 homers and 45 RBIs. ... Simmons gave up two hits and two runs and got only two outs. ... Phillies LHP Cliff Lee, on the disabled list since May 20 with a strained elbow, is scheduled to start Monday at home against San Francisco. ... Braves C Evan Gattis, on the DL since July 1 with a bulging disc in his back, is expected to return from a rehab assignment with Triple-A Gwinnett next week against Miami. ... Atlanta optioned struggling LHP Luis Avilan to Gwinnett and purchased the contract of LHP Chasen Shreve from Double-A Mississippi. Shreve became the seventh Braves player to make his major league debut this year when he struck out Ryan Howard to end the seventh. ... Phillies C Carlos Ruiz, on a rehab assignment with Single-A Clearwater, went 1 for 3 with a walk, a stolen base and scored two runs on Friday. Ruiz has been sidelined since June 27 with concussion symptoms.