Upton's three-run homer off Francisco Liriano (3-10) in the third broke things open early. He added a two-run single off reliever Brandon Cumpton in the fifth as the Braves extended Pittsburgh's losing streak to a season-high seven games.
Jason Heyward went 2 for 5 with three RBI for the Braves while Evan Gattis hit his 19th homer. Atlanta has won five straight.
Aaron Harang (10-7) struck out four without a walk in 8 1-3 innings.
McCutchen went 0 for 4 in his first game back after missing two weeks with fractured cartilage in his ribs. He left the game after grounding into a double play in the eighth.
Travis Snider, Starling Marte and Russell Martin had two hits apiece for the Pirates.