Even before leaving the batter's box, Upton flashed a grin to Freddie Freeman, who also grinned as he waited on-deck. They seemed to know what was coming.
Freeman said he savored the opportunity when the Cubs walked Upton.
''It puts a smile on my face,'' Freeman said. ''I don't know if you saw on TV, but after the second, third and fourth pitches Justin and I were kind of just laughing at each other. It kind of fires you up, if you're not fired up already.
''When they walk someone intentionally to get to you, it definitely lights a fire under your butt.''
Chris Johnson, whose two-run single in the third inning gave Atlanta a 2-1 lead, said facing Freeman with the game on the line is a dangerous strategy. Freeman, who had three hits, is hitting .321.
''I think Freddie is the best hitter in the National League,'' said Johnson, who had three hits.
Wesley Wright (0-1) walked Heyward to lead off the 10th. Heyward stole second base, setting up Wright's intentional walk to Upton.
Braves manager Fredi Gonzalez said he knows Cubs manager Rick Renteria faced a tough decision.
''You've got to pick your poison,'' Gonzalez said.
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 but took some solace in the ninth-inning comeback off Kimbrel.
''All in all, I take away we fought a pretty good battle, but we just fell a little short,'' Renteria said.
Olt led off the third inning with his seventh homer to give Chicago a 1-0 lead. Teheran retired 17 consecutive batters after the homer.
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.
''There's definitely a lot of fight in this team,'' Olt said. ''As long as we keep fighting we're going to find a way to come up with some wins.''
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.
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.
NOTES: The start of the game was delayed 18 minutes by rain. ... Johnson capped his big night with an eighth-inning single before stealing second - his first stolen base since 2012 and only the 11th of his career. ... Wood had been scheduled to start Sunday against the Cubs. Instead, RHP Aaron Harang will make Sunday's start. Gonzalez said Wood will be back in the rotation on May 17 against St. Louis. ... The series continues on Saturday night when Braves RHP Ervin Santana faces Cubs RHP Jeff Samardzija.