Marlins Complete Sweep, Edge Giants 2-1 Behind Stowers’ Power
The Miami Marlins put the finishing touches on a dominant sweep of the San Francisco Giants on Sunday, June 21, 2026, winning 2-1 in a game that showcased exactly why this Marlins team has become a problem in the NL East. Kyle Stowers and Otto Lopez did the damage, combining for both runs as Miami’s pitching staff shut down a Giants offense that simply couldn’t find its rhythm against Miami’s bullpen dominance.
Pitching Decisions
Star Performers
For all the talk about Logan Webb‘s excellence this season, Sunday belonged entirely to the Marlins. Webb was his usual reliable self, scattering five hits over eight innings with five strikeouts and allowing just two earned runs. But here’s the rub: those two runs were all Miami needed. The Giants managed a single scoring play when Casey Schmitt lined a single to right in the third inning, scoring Luis Arraez. One run. One solitary run from a Giants lineup that walked into loanDepot park looking to salvage something from this series.
It was Stowers who struck first, launching a solo home run to center field in the second inning that served as a statement of intent. The kid is rounding into something special at the plate, and he proved it when it mattered most on Father’s Day. The Marlins’ offense then tacked on insurance in the fourth when Otto Lopez doubled down the line in center, scoring Stowers again for what proved to be the winning run.
Bullpen Brilliance in the Clutch
Here’s where the Marlins separated themselves from a Giants team that had to be feeling the pressure of a sweep looming. John King came in and worked 1.1 scoreless innings to earn the win, but it was Lake Bachar‘s save that truly encapsulated Miami’s superiority in high-leverage situations. One inning pitched, one walk, zero hits allowed, and the job done. Bachar picked up his first career save in the process, a moment that will stick with him for life.
The Giants had their chances. Webb struck out five Giants hitters and showed why he’s a legitimate front-line starter. The problem is that when you’re playing in Miami against a team that’s clicking on all cylinders, one run simply doesn’t cut it. The Marlins defense was sharp throughout, with Esteury Ruiz making a shoestring catch that had no business being caught, and Jung Hoo Lee providing highlight reel material of his own in foul territory.
A Sweep That Says Everything
This sweep stings for San Francisco. You come into a division rival’s house, your ace pitches eight solid innings, and it’s not enough. That’s the mark of a team running hot, a team with swagger, a team that believes it can win in any situation. The Marlins showed all of that on Sunday, June 21, 2026.
The Giants will head home licking their wounds, wondering how they managed to get shut out across a three-game series. Meanwhile, Miami is cementing itself as a serious threat in the National League, one sweep at a time. Stowers is emerging as a key piece, Lopez is contributing in the clutch, and the pitching staff is showing championship-caliber depth. For the Giants, this is a bitter pill to swallow, but it’s one they’ll need to learn from fast.
Box Score
San Francisco Giants Batting
| Player | AB | R | H | RBI | BB | SO | AVG |
|---|---|---|---|---|---|---|---|
| Luis Arraez 2B | 4 | 1 | 1 | 0 | 0 | 0 | .320 |
| Bryce Eldridge DH | 3 | 0 | 0 | 0 | 1 | 0 | .298 |
| Casey Schmitt LF | 4 | 0 | 2 | 1 | 0 | 0 | .296 |
| Rafael Devers 1B | 3 | 0 | 0 | 0 | 1 | 1 | .238 |
| Jonah Cox PR | 0 | 0 | 0 | 0 | 0 | 0 | .400 |
| Jung Hoo Lee RF | 3 | 0 | 0 | 0 | 1 | 0 | .327 |
| Willy Adames SS | 4 | 0 | 0 | 0 | 0 | 2 | .223 |
| Matt Chapman 3B | 2 | 0 | 0 | 0 | 0 | 1 | .243 |
| Drew Gilbert CF | 3 | 0 | 1 | 0 | 0 | 1 | .236 |
| Daniel Susac C | 3 | 0 | 0 | 0 | 0 | 1 | .278 |
San Francisco Giants Pitching
| Pitcher | IP | H | R | ER | BB | SO | ERA |
|---|---|---|---|---|---|---|---|
| Logan Webb (L) | 8.0 | 5 | 2 | 2 | 1 | 5 | 3.35 |
Miami Marlins Batting
| Player | AB | R | H | RBI | BB | SO | AVG |
|---|---|---|---|---|---|---|---|
| Jakob Marsee CF | 3 | 0 | 0 | 0 | 0 | 0 | .205 |
| Griffin Conine RF | 4 | 0 | 0 | 0 | 0 | 1 | .231 |
| Xavier Edwards 2B | 3 | 0 | 1 | 0 | 0 | 1 | .286 |
| Kyle Stowers 1B | 2 | 2 | 1 | 1 | 1 | 0 | .223 |
| Otto Lopez SS | 3 | 0 | 1 | 1 | 0 | 0 | .332 |
| Owen Caissie DH | 3 | 0 | 0 | 0 | 0 | 1 | .222 |
| Esteury Ruiz LF | 3 | 0 | 1 | 0 | 0 | 1 | .260 |
| Joe Mack C | 3 | 0 | 0 | 0 | 0 | 1 | .248 |
| Connor Norby 3B | 3 | 0 | 1 | 0 | 0 | 0 | .210 |
| Javier Sanoja 3B | 0 | 0 | 0 | 0 | 0 | 0 | .247 |
Miami Marlins Pitching
| Pitcher | IP | H | R | ER | BB | SO | ERA |
|---|---|---|---|---|---|---|---|
| Ryan Gusto | 4.1 | 3 | 1 | 1 | 2 | 6 | 6.00 |
| John King (W) | 1.1 | 1 | 0 | 0 | 0 | 0 | 2.14 |
| Calvin Faucher | 1.1 | 0 | 0 | 0 | 0 | 0 | 3.13 |
| Michael Petersen | 1.0 | 0 | 0 | 0 | 0 | 0 | 3.34 |
| Lake Bachar (SV) | 1.0 | 0 | 0 | 0 | 1 | 0 | 3.02 |
