The smallest crowd in the 12-year history of Citizens Bank Park - 15,125 - saw the Braves stop their worst skid since 1988.
Phillies vs. Braves - the WORST teams in MLB - Get ONLY 15,125 fans tonight - SMALLEST Crowd in CBP History pic.twitter.com/dunoAMXrfj— Jeff Skversky (@JeffSkversky) September 8, 2015
Atlanta also had lost 13 in a row on the road since defeating the Phillies on Aug. 2.
Olivera homered, doubled and drove in four runs. Freddie Freeman homered and Jace Peterson and Andrelton Simmons each got three hits for the Braves.
Perez (5-6) threw seven strong innings. The rookie had been 0-6 with a 9.50 ERA over his last seven games.
Perez earned his first victory since June 20, giving up two runs and six hits while striking out seven.
Aaron Harang (5-15) leads the majors in losses. He is 1-12 with a 6.33 ERA over his last 17 starts.
Brian Bogusevic homered for the Phillies, who have lost four straight and 11 of 14.
Olivera, the centerpiece acquisition of the Braves' three-team deal with the Dodgers and Marlins in July, entered 2 for 17 in five big league games.
Freeman hit a two-run homer, his 16th, in the first. The Braves began the day with a majors-low 83 home runs.
Olivera's two-run double in the fourth highlighted a three-run inning that made it 5-1. He hit a two-run homer in the ninth.
Bogusevic, called up Friday from Triple-A Lehigh Valley, homered as a pinch-hitter in the fifth in his first at-bat in the big leagues since 2013.
Braves: Olivera returned to the lineup after sitting out Sunday's game at Washington with a bruised left foot.
Phillies: C Cameron Rupp was back in the lineup. He missed two games after getting hit in the arm by a pitch.
Phillies rookie RHP Aaron Nola (5-2, 4.02) tries to rebound from his worst outing when he starts Tuesday night. Nola gave up a career-worst six runs on nine hits in four innings of a 9-4 loss at the Mets last Wednesday. The Braves haven't announced their starter.