Jeff Hoffman, Yunior Marte, Gregory Soto and Dylan Covey combined to cover the last three innings to finish off the victory.
Cardinals starting pitcher Miles Mikolas (7-12) allowed five runs on eight hits in six innings. He struck out two and walked nobody.
St. Louis drew eight walks in the game but left 13 runners on base.
The Phillies struck first and never trailed. Trea Turner hit a one-out double in the first inning and scored on Bohm's single for a 1-0 lead.
Philadelphia increased its lead to 2-0 in the second inning. Bryson Stott hit a one-out single, stole second base, moved to third on Nick Castellanos' infield single and scored on Marsh's sacrifice fly.
The Cardinals cut their deficit to 2-1 in the third inning. Maysn Winn hit a single and scored on Paul Goldschmidt's double. Tyler O'Neill and Willson Contreras walked to load the bases, but Suarez prevented further damage by striking out Luken Baker to end the inning.
The Phillies pushed their lead to 5-1 in the fifth inning. Marsh and Rojas singled and Schwarber followed with his 44th homer of the season.
They made it 6-1 in the ninth inning when Castellanos singled, stole second base and scored on Rojas' double.
The Cardinals loaded the bases with two outs in the ninth inning, but Contreras grounded out to end the game.
—Field Level Media