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.