ATLANTA -- The Cubs extended the game with a rare ninth-inning rally against Braves closer Craig Kimbrel.
Left-hander Wesley Wright couldn't take advantage of the break.
Wright opened the 10th inning with two walks, one intentional, and then gave up Freddie Freeman's run-scoring single up the middle as Chicago fell to Atlanta 3-2 Friday night.
Freeman's single drove in Jason Heyward from second base.
Wright (0-1) walked Heyward to lead off the 10th. Heyward stole second base, setting up Wright's intentional walk to Justin Upton.
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.
"Wesley has been fantastic for us," Cubs manager Rick Renteria said. "I'd give him the ball again."
Jason Hammel allowed only two runs in seven innings -- his fifth straight start in which he lasted at least seven innings. Atlanta's Julio Teheran was even better, allowing only one hit -- Mike Olt's homer -- in eight innings.
"Teheran threw a great game," Hammel said. "That's where it starts. It was a good old-fashioned pitchers' duel, I guess, tonight. He was even better."
Chris Johnson's two-run single off Hammel in the third inning gave Atlanta a 2-1 lead.
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 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."
Kimbrel suffered his second blown save in 11 chances, but the Braves bailed him out in the 10th.
Braves manager Fredi Gonzalez said Renteria faced a tough decision in walking Upton to face Freeman.
"You've got to pick your poison," Gonzalez said.
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 that 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.
Teheran retired 17 consecutive batters after Olt's homer in the third inning.
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.
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.
"For a fastball-hitting team like (Atlanta), you've got to be really careful about being down," Hammel said. "In that inning, the ball was running back over the plate and they were able to get the barrel to it."
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 Saturday night, when Braves RHP Ervin Santana (3-0) faces Cubs RHP Jeff Samardzija (0-3).