Giants Shut Down Brewers Behind Mahle’s Gem, McCray’s Blast
San Francisco’s pitching staff delivered a masterclass on Monday night, systematically dismantling the Milwaukee Brewers in a 3-0 shutout that felt far more dominant than the final score suggests. The Giants didn’t just win this game, they suffocated it, holding the Brewers to three measly hits across nine innings while Brandon Sproat labored helplessly on the mound for Milwaukee.
Pitching Decisions
Star Performers
Mahle Muzzles Milwaukee
Tyler Mahle was the story here, and frankly, he was everything a team could ask for in a crucial July contest. The right-hander cruised through six scoreless innings, surrendering just three hits while walking two and striking out three. More importantly, Mahle never looked flustered, never looked like the Brewers were close to cracking through. That’s the kind of composed, professional pitching that wins playoff games in October, and the Giants got it on a Monday in July when it mattered.
Sproat tried to match him early, striking out five hitters through six innings, but the Milwaukee right-hander’s three walks proved costly. In baseball, you can’t afford free passes against a team that executes like San Francisco did on Monday.
McCray Delivers the Dagger
Grant McCray broke the scoreless tie in the fourth inning with a two-run home run that traveled into the left-center gap like a missile, scoring Willy Adames and putting the Giants up 2-0. It was McCray’s first home run of 2026, and what a time to uncork it. The kid showed discipline and power when it mattered, turning a decent pitch into a highlight-reel moment that essentially decided the outcome of this game right then and there.
Luis Arraez contributed the game’s opening run in the third inning with a single to right, scoring Jesus Rodriguez, but it was McCray’s blast that gave San Francisco the cushion they needed. One home run shouldn’t be the difference in a game like this, but when your pitcher is dealing the way Mahle was, one run is often enough.
Giants’ Bullpen Seals It
Erik Miller came in for the save situation in the ninth, retiring the Brewers in order without allowing a hit while striking out two. Clean, efficient, professional. That’s the blueprint for winning baseball in 2026, and the Giants executed it to perfection Monday night.
The Brewers never threatened seriously, never mounted anything resembling a genuine rally. Milwaukee came to San Francisco hoping to chip away at the Giants’ lead in what looked like a winnable game, but instead they left Oracle Park shut out and shut down. Sometimes pitching is enough. Sometimes excellent pitching beats good hitting, and that’s precisely what happened here.
This was a statement win for San Francisco, the kind of game that separates contenders from pretenders in late July. The Giants didn’t rely on offense fireworks, didn’t need to outscore anybody. They simply pitched better and executed fundamentals. In baseball, that formula wins ballgames, particularly important ones on Monday nights in July.
Box Score
Milwaukee Brewers Batting
| Player | AB | R | H | RBI | BB | SO | AVG |
|---|---|---|---|---|---|---|---|
| Christian Yelich DH | 4 | 0 | 0 | 0 | 0 | 2 | .239 |
| Jackson Chourio LF | 4 | 0 | 1 | 0 | 0 | 1 | .277 |
| Brice Turang 2B | 3 | 0 | 0 | 0 | 0 | 2 | .265 |
| William Contreras C | 3 | 0 | 0 | 0 | 0 | 1 | .271 |
| Jake Bauers RF | 2 | 0 | 1 | 0 | 0 | 0 | .265 |
| Luis Lara RF | 1 | 0 | 0 | 0 | 0 | 0 | .294 |
| Andrew Vaughn 1B | 2 | 0 | 1 | 0 | 1 | 0 | .310 |
| Garrett Mitchell CF | 3 | 0 | 0 | 0 | 0 | 1 | .269 |
| Cooper Pratt SS | 2 | 0 | 0 | 0 | 1 | 0 | .284 |
| Joey Ortiz 3B | 3 | 0 | 0 | 0 | 0 | 0 | .237 |
Milwaukee Brewers Pitching
| Pitcher | IP | H | R | ER | BB | SO | ERA |
|---|---|---|---|---|---|---|---|
| Brandon Sproat (L) | 6.0 | 6 | 3 | 3 | 3 | 5 | 5.05 |
| Garrett Stallings | 2.0 | 0 | 0 | 0 | 1 | 1 | 0.00 |
San Francisco Giants Batting
| Player | AB | R | H | RBI | BB | SO | AVG |
|---|---|---|---|---|---|---|---|
| Luis Arraez 2B | 4 | 0 | 1 | 1 | 0 | 1 | .326 |
| Heliot Ramos LF | 4 | 0 | 0 | 0 | 0 | 1 | .258 |
| Bryce Eldridge DH | 3 | 0 | 0 | 0 | 1 | 1 | .256 |
| Rafael Devers 1B | 3 | 0 | 0 | 0 | 1 | 0 | .246 |
| Casey Schmitt 3B | 1 | 0 | 1 | 0 | 0 | 0 | .271 |
| Christian Koss 3B | 2 | 0 | 0 | 0 | 1 | 1 | .130 |
| Drew Gilbert CF | 3 | 0 | 1 | 0 | 0 | 0 | .234 |
| Willy Adames SS | 2 | 1 | 1 | 0 | 1 | 0 | .226 |
| Grant McCray RF | 3 | 1 | 1 | 2 | 0 | 0 | .125 |
| Jesus Rodriguez C | 3 | 1 | 1 | 0 | 0 | 2 | .240 |
| Daniel Susac C | 0 | 0 | 0 | 0 | 0 | 0 | .248 |
San Francisco Giants Pitching
| Pitcher | IP | H | R | ER | BB | SO | ERA |
|---|---|---|---|---|---|---|---|
| Tyler Mahle (W) | 6.0 | 3 | 0 | 0 | 2 | 3 | 4.96 |
| Sam Hentges | 1.0 | 0 | 0 | 0 | 0 | 1 | 2.53 |
| Dylan Smith | 1.0 | 0 | 0 | 0 | 0 | 1 | 2.65 |
| Erik Miller (SV) | 1.0 | 0 | 0 | 0 | 0 | 2 | 2.87 |
