Buck had a two-run single in the Mets' four-run third inning and knocked in another run in a three-run sixth to beat relief pitcher Kameron Loe (1-2).
Mets rookie starter Zack Wheeler (4-1), with six innings of four-hit pitching, collected the win. He allowed four runs, three earned. Bobby Parnell pitched the ninth for his 20th save.
Atlanta starter Alex Wood, making his second career start, lasted 4 1/3 innings, giving up four runs on eight hits and two walks. He also struck out five.
The Braves got him off the hook by tying the score 4-4 in the sixth but New York scored three times off Loe for the win.
Freddie Freeman hit a home run in the sixth that tied the score for the Braves but two batters into the bottom of the inning the Mets were back out in front.
Andrew Brown opened the New York sixth with a double and scored on Daniel Murphy's single. David Wright followed with an RBI triple. After two outs and an intentional walk, Buck doubled to left, driving in Wright for the 7-4 lead.
Buck committed a throwing error that contributed to a first-inning Atlanta run but had his two-run single in the third that finished off a four-run rally.
The Braves quickly answered with a two-run home run by Dan Uggla in the fourth and then Freeman's home run made the score 4-4 in the sixth.
'SNL': 'Anchorman 2' cast, One Direction sing 'Afternoon Delight' [VIDEO]
Reindeer recovered after escaping from Santa during lighting ceremony