Eric Hartline-USA TODAY Sports

Zack Wheeler and two relievers combined on a four-hitter as the Philadelphia Phillies shut out the visiting St. Louis Cardinals 4-0 Sunday.

Wheeler (7-4) held the Cardinals to those four hits and a walk while striking out five batters over seven innings. It was his fifth scoreless start of six of more innings this season, tying Rangers pitcher Martin Perez for most in the majors.

Nick Nelson set the down the Cardinals in the eighth inning and Corey Knebel closed out the ninth.

JT Realmuto hit a two-run homer and Rhys Hoskins added a solo homer, a double and two runs for the Phillies, who are 21-9 since the end of May.

Cardinals starting pitcher Adam Wainwright (6-6) allowed four runs on eight hits in 5 2/3 innings. He struck out five batters and walked one.

The Phillies threatened in the third inning when Bryson Stott walked with one out and Yairo Munoz lined a single to center field. But Kyle Schwarber grounded into a double play to end the inning.

Leading off the bottom of the fourth, Hoskins broke the scoreless tie with his fourth homer in his last five games. Realmuto and Alec Bohm hit two-out singles before Odubel Herrera grounded out.

The Phillies increased their lead to 4-0 in the sixth inning. Hoskins hit a leadoff double, his sixth hit in 10 at-bats against Wainwright, and he scored on Nick Castellanos' single.

One out later, Realmuto hit his two-run homer.

The Cardinals threatened in the eighth inning when Andrew Knizner walked and advanced to second on a groundout, but Nelson struck out Brendan Donovan to leave him there.

The Phillies had a chance to tack on in the eighth inning with the help of an error. After Darick Hall hit a single, Realmuto hit a potential forceout grounder -- but second baseman Nolan Gorman muffed shortstop Tommy Edman's throw.

Hall raced to third and Realmuto later stole second base, but Bohm and Herrera struck out to strand them.

More must-reads:

TODAY'S BEST
Josef Newgarden wins Indianapolis 500 with a thrilling last-lap pass
White Sox manager absolutely shreds team after latest loss
Unlikely hero helps Rangers steal Game 3 over Panthers
Angels slugger suffers what might be baseball's most bizarre injury of 2024 season
Watch: Unlikely Rangers playoff hero nets two goals vs. Panthers
Celtics put Kristaps Porzingis' return from injury on hold
Watch: Panthers' Sam Reinhart nets two goals in first period vs. Rangers
Watch: Big crash ensues on Lap 1 of 2024 Indianapolis 500
Red Sox release well-traveled right-hander
Braves slugger, four-time All-Star leaves game due to knee soreness
Anthony Edwards makes declaration ahead of Game 3 against Mavericks
Watch: Matt Vierling's walk-off HR caps wild game in Detroit
Report: Star Japanese pitcher could move to MLB next year
Royals return Rule 5 pick to Yankees
Sixers viewed as a 'serious danger' to snatch core Nuggets role player
NFL reporter reveals why CeeDee Lamb isn't rushing to sign new contract
Diamondbacks designate struggling right-hander for assignment
Report: 76ers believe this eight-time All-Star would be 'ideal fit'
Pelicans expected to promote from within for GM role
Watch: Massive wreck on first lap delays Monaco Grand Prix