The Braves took a 4-3 lead in the top of the 11th but Arizona produced four consecutive one-out singles off Craig Kimbrel in the bottom half of the inning to win its second straight.
Atlanta had a four-game winning streak snapped.
Kimbrel (1-2) suffered his fourth blown save of the season, giving up a single to Russell Branyan after Gerardo Parra had grounded out to open the inning. Roberts then reached on an infield hit with pinch-runner Josh Wilson going to second, from where he scored on a single by Kelly Johnson.
Roberts made it to third on the base hit by Johnson and he came in with the winning run when Upton delivered his infield single.
That gave the victory to Aaron Heilman (2-0), who gave up the go-ahead run in the 11th on a two-out single by Diory Hernandez that brought home Dan Uggla.
Until the hectic 11th inning, the game had been deadlocked since the seventh -- when Roberts scored on a wild pitch to forge a 2-2 tie.