Gonzalez decided, though, that Ramiro Pena's baserunning in the bottom of the sixth was his favorite.
"I thought the play of the game was the hustle by Pena," Gonzalez said. "(Andres) Torres misplays that ball, and (Pena) hustles all the way and gets to third base, and we were able to execute a squeeze with (Jordan) Schafer and get an extra run."
Freeman, who began the night hitless in 11 career appearances against Giants starter Tim Lincecum, singled in his first three at-bats and improved his average to .456 with runners in scoring position -- third-best in the majors.
One night after he drove in the winning run off Giants closer Sergio Romo, Freeman made it 1-0 in the first when his RBI single scored Simmons from second.
"Here's a guy that, going into the game, didn't have very good numbers against Lincecum, but he's swinging it pretty good," Gonzalez said. "Got us a run early in the game."
Freeman's single in the third moved Upton to second. The next batter, B.J. Upton, drove in his brother Justin from second to put Atlanta up 2-0.
Teheran (5-3) allowed seven hits and one walk. The 22-year-old struck out eight and benefited from stellar plays in the fourth by Heyward in right field and Justin Upton in left, and by Simmons at shortstop in the sixth that kept a run from scoring with the Braves holding a two-run lead.
"I thought it was going to be trouble (on Justin Upton's play)," Teheran said, "but everybody starting clapping and I was pretty excited."
Lincecum (4-7) gave up six hits and five walks in six innings. Two of his three runs were earned, and he struck out three.
Torres, San Francisco's left fielder, hurt his team in the bottom of the sixth when Pena's single appeared to bounce off his right foot and toward the wall.
"Obviously he can't let that ball get by him, and it ended up being another run," Giants manager Bruce Bochy said. "But they pitched well and played good defense. We had a couple of great opportunities of people just missing a hit."
Pena, who reached third on Torres' two-base fielding error, scored when pinch-hitter Schafer drove him in with a sacrifice squeeze bunt to make it 3-0.
Teheran struggled in his previous outing, a 7-6 loss at San Diego last Monday, but he beat the Giants for the second time in two starts against them since May 9.
Lincecum, a two-time NL Cy Young Award winner, has lost six of his last nine starts and has posted a 6.92 ERA in the losses.
Jose Mijares and rookie Jake Dunning, who made his major league debut, held the Braves to one hit in the seventh and eighth.
Giants CF Angel Pagan said before the game that he's still hoping to avoid surgery on his left hamstring. Pagan took a platelet-rich plasma injection behind his knee last Sunday and is still unable to run the bases. He's missed 20 straight games with the injury. ... Gonzalez said rookie RHP Alex Wood will start the first game of Tuesday's doubleheader opposite Mets RHP Matt Harvey. ... The Giants' 6-5 loss Saturday was their first when leading after eight innings since July 4, 2012 at Washington. ... San Francisco 3B Pablo Sandoval, on the disabled list with a strained left foot, holds a narrow lead over Mets 3B David Wright in balloting for the July 16 All-Star Game in New York.
Copyright by STATS LLC and The Associated Press
ATLANTA, GA - JUNE 16: Tim Lincecum #55 of the San Francisco Giants pitches against the Atlanta Braves at Turner...