Rain fell throughout the contest, during which Atlanta seized a 7-0 lead to defeat Philadelphia for the second straight game.
Upton's two-run homer came in the first inning and Gattis hit his solo shot in the fourth. Freddie Freeman delivered a three-run double later in the fourth and now has six RBI in two games.
Chase Utley doubled home Philadelphia's only two runs in the seventh, but Heyward added his two-run homer in the eighth.
This was the first time in 11 seasons that Halladay had not started for the Phillies in their opening day game.
Benedict Cumberbatch's dramatic reading of R. Kelly lyrics is just what you need
Beyonce flaunts bikini body, Blue Ivy in vacation pics