Kimbrel couldn’t hold a 2-1 lead in the ninth after Julio Teheran allowed only one hit — Mike Olt’s homer — in eight innings.
Wesley Wright (0-1) walked Heyward to lead off the 10th. Heyward stole second base. Wright issued an intentional walk to Justin Upton before Freeman ended the game with his single. Heyward slid home with the winning run as Ryan Kalish’s throw from center field was off target.
Luis Valbuena led off the 10th with a single to right field off Alex Wood (3-5), who then recorded three straight outs in his first relief appearance of the season. The Braves announced before the game Wood was moving to the bullpen for one week.
The Braves earned only their second win in their last 10 games. The Cubs, last in the NL Central, have lost five of six.
Chris Johnson had three hits, including a two-run single in the third.
Olt led off the third inning with his seventh homer to give Chicago a 1-0 lead. That was the only hit Teheran allowed through eight innings. He retired 17 consecutive batters after the homer.
Teheran began the night fifth in the majors with a 1.80 ERA and he lowered the mark to 1.71. He had a season-high nine strikeouts with two walks.
Kimbrel suffered his second blown save in 11 chances.
Chris Coghlan led off the ninth with a single off Kimbrel. Coghlan moved to second on Emilio Bonifacio’s groundout and scored on a single to left by Kalish, who advanced to second on Justin Upton’s fielding error. Kalish moved to third on Anthony Rizzo’s grounder to first. Kimbrel walked Starlin Castro before ending the inning on another grounder by Nate Schierholtz.
Chicago’s Jason Hammel allowed two runs on seven hits and one walk in seven innings.
The Braves’ only runs against Hammel came on a string of three straight two-out hits in the third. Freeman and Evan Gattis singled, Gattis moved to second on a wild pitch and Johnson drove both runners in with a single to left field.
Johnson began the night hitting only .246 with one homer and five RBIs. He has shown recent signs of returning to his 2013 form, when he hit .321 to rank second in the NL. He already has four multi-hit games in May.
Johnson capped his big night with an eighth-inning single before stealing second — his first stolen base since 2012 with Arizona and only the 11th of his career.
Cubs manager Rick Renteria tweaked his lineup. Kalish hit second, behind Bonifacio, for the fifth time this season.
“We’ll see how it works out,” Renteria said. “Putting him there does give us a couple of guys that can run at the top and guys that can get on base, hopefully.”
Kalish walked and was caught stealing in the first inning. Olt’s homer was the only other baserunner Teheran allowed until Olt walked with one out in the eighth. John Baker grounded out to end the inning.
NOTES: The start of the game was delayed 18 minutes by rain. ... Wood had been scheduled to start Sunday against the Cubs. Instead, RHP Aaron Harang will make Sunday’s start. Manager Fredi Gonzalez said Wood will be back in the rotation on May 17 against St. Louis. ... The series continues tonight when Braves RHP Ervin Santana faces Cubs RHP Jeff Samardzija.