The Giants, who were seeking their first sweep of a series in Atlanta since June 1988, saw a five-game winning streak broken.
Freeman led off the second inning with his 13th home run of the season and Michael Bourn tripled in Angel Pagan in the third for the second Atlanta run. Ross made the score 3-1 with a two-out shot in the fourth for his fifth homer of the year.
All the runs were allowed by Giants starter Madison Bumgarner (11-6), who allowed just those three hits over seven innings. He struck out eight and didn't walk a batter.
Atlanta's Tim Hudson (8-4) allowed eight hits and two runs over 7 1/3 innings in getting the win. He walked two and struck out three.
Craig Kimbrel pitched a 1-2-3 ninth for his major-league leading 28th save.
NBC reportedly holds celebs hostage to Jimmy Fallon's show
Ray Liotta sues skin care company over use of likeness