The Phillies trailed 1-0 through seven innings but put up a seven-spot in the eighth to pull away. Cameron Rupp doubled with one out and was replaced by pinch-runner Ben Revere before Cesar Hernandez walked to put the go-ahead run on base. Tony Gwynn Jr. advanced the runners with a grounder to third, and Garza was replaced on the mound by Will Smith.
Rollins greeted the lefty specialist with a liner into right that scored both runners without a throw. After Chase Utley walked, Ryan Howard went the opposite way with an RBI ground-rule double to left. Marlon Byrd was then walked intentionally to load the bases for Cody Asche, who plated two more runs with his double over Ryan Braun's head in right for a 5-1 lead.
Domonic Brown's two-run single up the middle put the finishing touches on the inning. Howard added a two-run homer in the ninth to make it 9-1.
The seven runs in the eighth were the most the Phillies scored in any inning this season.
Garza (6-6) was perfect through four innings and carried a no-hitter into the seventh before Rollins broke it up with a leadoff single to right. He was charged with two runs on three hits in 7 2/3 innings.
The Brewers have lost a season-high five straight games.
David Buchanan (5-5) bettered his counterpart Garza, yielding just a run on four hits with five strikeouts over seven stellar frames for the Phillies. Howard's blast ended a 20-game homerless streak for the former MVP.
Carlos Gomez led off the sixth inning with a solo homer to left-center, giving the Brewers a brief 1-0 lead.
After Rollins ended the no-hit bid in the seventh, Utley followed with a base hit to center and Howard moved the runners with a groundout to first base. Byrd then grounded sharply to shortstop and Rollins broke for home, but Jeff Bianchi's throw was in time for Jonathan Lucroy to apply the tag for the second out.
Asche popped to the warning track in center to end the inning and maintain Milwaukee's 1-0 edge.