The Kansas City Royals swept the Pittsburgh Pirates in a thrilling three-game series during the 2025 MLB regular season, showcasing offensive firepower and clutch pitching. This article provides a comprehensive breakdown of the series, held on July 7, 8, and 9, 2025, at Kauffman Stadium, with detailed player statistics, game recaps, and key moments. All data is sourced from verified and trusted platforms, including ESPN, MLB.com, Baseball-Reference, and FanGraphs, ensuring accuracy and reliability. The Royals won all three games (9-3, 4-3, 4-3), leveraging home runs from Salvador Perez, Bobby Witt Jr., and Nick Loftin, while the Pirates showed fight with contributions from Tommy Pham and Oneil Cruz but faltered in late innings.
Game Highlights
- Sport: Baseball
- League: MLB (Major League Baseball)
- Matchup: Kansas City Royals vs Pittsburgh Pirates Match Player Stats
- Games Covered:
- Game 1: July 7, 2025 (KC 9, PIT 3)
- Game 2: July 8, 2025 (KC 4, PIT 3)
- Game 3: July 9, 2025 (KC 4, PIT 3)
- Series Result: Royals won the series 3-0
Series Overview
The Kansas City Royals dominated the Pittsburgh Pirates in a 3-0 series sweep, with scores of 9-3 on July 7, 4-3 on July 8, and 4-3 on July 9. The Royals’ offensive output, driven by four home runs in Game 1 and clutch hitting from Nick Loftin in Game 3, paired with solid pitching from Noah Cameron and Carlos Estevez, secured the victories. The Pirates, despite contributions from Tommy Pham and Oneil Cruz, struggled with bullpen execution and missed opportunities in key moments.
Game 1: Kansas City Royals 9, Pittsburgh Pirates 3 (July 7, 2025)
Game Summary
The Kansas City Royals opened the series with a commanding 9-3 victory over the Pittsburgh Pirates on July 7, 2025, at Kauffman Stadium, improving to 44-48 (21-24 home). The Pirates fell to 38-54 (12-33 away). The Royals unleashed four home runs, with Salvador Perez, Bobby Witt Jr., Vinnie Pasquantino, and Nick Loftin going deep, backed by a stellar 7.0-inning performance from rookie Noah Cameron (3-4, 2 ER, 7 K). Tommy Pham’s two-run homer for Pittsburgh wasn’t enough, as Andrew Heaney (4-8) struggled, allowing four earned runs in 3.0 innings.
Key Player Stats: Pittsburgh Pirates
- Tommy Pham (LF): 3 AB, 1 R, 1 H, 2 RBI, 1 HR, 1 BB, 0 K, .238 AVG, .312 OBP, .316 SLG. Pham’s 3rd-inning homer (3rd of season, 428 feet) gave Pittsburgh a brief lead.
- Andrew McCutchen (DH): 4 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 1 K, .258 AVG, .337 OBP, .390 SLG.
- Bryan Reynolds (RF): 4 AB, 0 R, 1 H, 0 RBI, 0 HR, 0 BB, 1 K, .229 AVG, .294 OBP, .378 SLG.
- Nick Gonzales (2B): 2 AB, 1 R, 0 H, 0 RBI, 0 HR, 2 BB, 0 K, .283 AVG, .339 OBP, .442 SLG. Gonzales scored on Pham’s homer.
- Ke’Bryan Hayes (3B): 4 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 1 K, .240 AVG, .289 OBP, .295 SLG.
- Alexander Canario (CF): 4 AB, 0 R, 1 H, 1 RBI, 0 HR, 0 BB, 2 K, .223 AVG, .290 OBP, .331 SLG. Canario’s 9th-inning single drove in a run.
- Henry Davis (C): 4 AB, 1 R, 1 H, 0 RBI, 0 HR, 0 BB, 1 K, .203 AVG, .261 OBP, .333 SLG. Davis scored in the 3rd.
- Jared Triolo (1B): 3 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .159 AVG, .250 OBP, .268 SLG.
- Isiah Kiner-Falefa (SS): 3 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 2 K, .269 AVG, .313 OBP, .335 SLG.
- Team Stats: 31 AB, 3 R, 4 H, 3 RBI, 1 HR, 3 BB, 8 K, 2-4 RISP, 4 LOB, 1 DP.
Key Player Stats: Kansas City Royals
- Jonathan India (2B): 4 AB, 2 R, 2 H, 0 RBI, 0 HR, 0 BB, 1 K, .246 AVG, .330 OBP, .343 SLG, 2B (19). India scored twice.
- Tyler Tolbert (PH-2B): 1 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 1 K, .100 AVG, .182 OBP, .100 SLG.
- Bobby Witt Jr. (SS): 3 AB, 2 R, 2 H, 3 RBI, 1 HR, 0 BB, 1 K, .296 AVG, .346 OBP, .503 SLG, 2B (31), HR (13). Witt’s 4th-inning homer was pivotal.
- Vinnie Pasquantino (1B): 4 AB, 1 R, 1 H, 1 RBI, 1 HR, 0 BB, 0 K, .271 AVG, .331 OBP, .439 SLG, 2B (13), HR (15). Pasquantino’s 1st-inning homer opened scoring.
- Maikel Garcia (3B): 3 AB, 1 R, 2 H, 1 RBI, 0 HR, 1 BB, 0 K, .306 AVG, .365 OBP, .467 SLG, 2B (24). Garcia drove in a run in the 3rd.
- Salvador Perez (C): 4 AB, 1 R, 2 H, 2 RBI, 1 HR, 0 BB, 0 K, .238 AVG, .280 OBP, .406 SLG, 2B (24), HR (11). Perez’s 5th-inning homer extended the lead.
- Luke Maile (C): 0 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .375 AVG, .500 OBP, .750 SLG.
- Jake Caglianone (RF): 3 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .144 AVG, .202 OBP, .234 SLG.
- Mark Canha (DH): 4 AB, 0 R, 0 H, 1 RBI, 0 HR, 0 BB, 1 K, .212 AVG, .272 OBP, .265 SLG. Canha drove in a run via fielder’s choice.
- Nick Loftin (LF): 4 AB, 1 R, 2 H, 1 RBI, 1 HR, 0 BB, 0 K, .188 AVG, .233 OBP, .363 SLG, HR (2). Loftin’s 8th-inning homer sealed the rout.
- Kyle Isbel (CF): 4 AB, 1 R, 1 H, 0 RBI, 0 HR, 0 BB, 1 K, .241 AVG, .264 OBP, .361 SLG, 3B (4). Isbel scored in the 6th.
- Team Stats: 34 AB, 9 R, 12 H, 9 RBI, 4 HR, 1 BB, 5 K, 3-7 RISP, 4 LOB, 1 GIDP, 1 E (Pasquantino).
Pirates Pitching
- Andrew Heaney (L, 4-8): 3.0 IP, 6 H, 4 R, 4 ER, 1 BB, 2 K, 1 HR, 76-49 PC-ST, 4.41 ERA.
- Carmen Shugart: 2.2 IP, 4 H, 4 R, 4 ER, 0 BB, 1 K, 2 HR, 42-26 PC-ST, 3.69 ERA.
- Genesis Cabrera: 2.0 IP, 2 H, 1 R, 1 ER, 0 BB, 1 K, 1 HR, 27-18 PC-ST, 5.40 ERA.
- David Bednar: 0.1 IP, 0 H, 0 R, 0 ER, 0 BB, 1 K, 0 HR, 4-4 PC-ST, 2.70 ERA.
- Team Stats: 8.0 IP, 12 H, 9 R, 9 ER, 1 BB, 5 K, 4 HR, 149-97 PC-ST.
Royals Pitching
- Noah Cameron (W, 3-4): 7.0 IP, 3 H, 2 R, 2 ER, 1 BB, 7 K, 1 HR, 109-68 PC-ST, 2.56 ERA.
- Samuel Cruz: 1.0 IP, 0 H, 0 R, 0 ER, 1 BB, 0 K, 0 HR, 10-6 PC-ST, 2.04 ERA.
- Jonathan Bowlan: 1.0 IP, 1 H, 1 R, 1 ER, 1 BB, 1 K, 0 HR, 21-12 PC-ST, 3.38 ERA.
- Team Stats: 9.0 IP, 4 H, 3 R, 3 ER, 3 BB, 8 K, 1 HR, 140-86 PC-ST.
Critical Moments
- 1st Inning (PIT 0, KC 1): Pasquantino’s solo homer (378 feet) off Heaney gave the Royals an early lead.
- 3rd Inning (PIT 2, KC 4): Pham’s two-run homer (428 feet) off Cameron put Pittsburgh ahead 2-1. The Royals responded with Garcia’s RBI single, Perez’s RBI double, and Canha’s fielder’s choice to take a 4-2 lead.
- 4th Inning (PIT 2, KC 6): Witt Jr.’s two-run homer (404 feet) off Shugart extended the lead.
- 5th Inning (PIT 2, KC 7): Perez’s solo homer (411 feet) off Shugart pushed the lead to five.
- 6th Inning (PIT 2, KC 8): Witt Jr.’s sacrifice fly scored Isbel.
- 8th Inning (PIT 2, KC 9): Loftin’s solo homer (409 feet) off Cabrera capped the Royals’ scoring.
- 9th Inning (PIT 3, KC 9): Canario’s RBI single off Bowlan scored Gonzales, but the Pirates couldn’t rally further.
Game 2: Kansas City Royals 4, Pittsburgh Pirates 3 (July 8, 2025)
Game Summary
The Royals edged the Pirates 4-3 on July 8, 2025, improving to 46-48 (23-24 home), while Pittsburgh dropped to 38-56 (12-35 away). Salvador Perez hit two home runs (2nd and 8th innings), and Jake Caglianone added a two-run homer in the 4th. Pittsburgh tied the game with a three-run 6th inning, led by Ke’Bryan Hayes’ two-RBI single, but Perez’s 8th-inning homer off Ian Mattson (2-1) secured the win for Lucas Erceg (4-2). Carlos Estevez earned his 25th save.
Key Player Stats: Pittsburgh Pirates
- Tommy Pham (LF): 4 AB, 1 R, 3 H, 0 RBI, 0 HR, 0 BB, 0 K, .250 AVG, .323 OBP, .335 SLG, 2B (8). Pham’s double sparked the 6th-inning rally.
- Andrew McCutchen (DH): 3 AB, 1 R, 1 H, 0 RBI, 0 HR, 1 BB, 1 K, .259 AVG, .339 OBP, .390 SLG. McCutchen scored in the 6th.
- Bryan Reynolds (RF): 4 AB, 1 R, 1 H, 0 RBI, 0 HR, 0 BB, 2 K, .227 AVG, .290 OBP, .372 SLG. Reynolds scored in the 6th.
- Nick Gonzales (2B): 4 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 1 K, .273 AVG, .326 OBP, .446 SLG.
- Oneil Cruz (CF): 4 AB, 0 R, 1 H, 1 RBI, 0 HR, 0 BB, 1 K, .204 AVG, .313 OBP, .411 SLG, 2B (12). Cruz drove in a run in the 6th.
- Ke’Bryan Hayes (3B): 4 AB, 0 R, 1 H, 2 RBI, 0 HR, 0 BB, 2 K, .241 AVG, .288 OBP, .297 SLG. Hayes’ two-RBI single tied the game.
- Joey Bart (C): 3 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 2 K, .230 AVG, .330 OBP, .283 SLG.
- Adam Frazier (PH): 1 AB, 0 R, 1 H, 0 RBI, 0 HR, 0 BB, 0 K, .258 AVG, .320 OBP, .339 SLG. Frazier singled in the 9th.
- Jared Triolo (1B): 1 AB, 0 R, 0 H, 0 RBI, 0 HR, 1 BB, 0 K, .158 AVG, .253 OBP, .266 SLG.
- Spencer Horwitz (PH-1B): 2 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .237 AVG, .299 OBP, .342 SLG.
- Isiah Kiner-Falefa (SS): 4 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .267 AVG, .312 OBP, .331 SLG.
- Team Stats: 34 AB, 3 R, 8 H, 3 RBI, 0 HR, 2 BB, 9 K, 2-9 RISP, 6 LOB, 0 E, CS (Cruz).
Key Player Stats: Kansas City Royals
- Jonathan India (2B): 4 AB, 0 R, 1 H, 0 RBI, 0 HR, 1 BB, 2 K, .243 AVG, .327 OBP, .337 SLG, 2B (19), CS, Picked Off.
- Bobby Witt Jr. (SS): 3 AB, 0 R, 1 H, 0 RBI, 0 HR, 1 BB, 1 K, .295 AVG, .346 OBP, .501 SLG, 2B (31), SB (25).
- Vinnie Pasquantino (DH): 4 AB, 0 R, 1 H, 0 RBI, 0 HR, 0 BB, 1 K, .270 AVG, .329 OBP, .437 SLG, 2B (13).
- Maikel Garcia (3B): 4 AB, 1 R, 1 H, 0 RBI, 0 HR, 0 BB, 0 K, .305 AVG, .363 OBP, .464 SLG, 2B (24). Garcia scored in the 4th.
- Salvador Perez (1B): 4 AB, 2 R, 3 H, 2 RBI, 2 HR, 0 BB, 0 K, .245 AVG, .285 OBP, .427 SLG, HR (13). Perez’s homers were decisive.
- Jake Caglianone (RF): 4 AB, 1 R, 1 H, 2 RBI, 1 HR, 0 BB, 2 K, .151 AVG, .205 OBP, .286 SLG, HR (4). Caglianone’s 4th-inning homer put KC ahead.
- John Rave (RF): 0 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .183 AVG, .275 OBP, .233 SLG.
- Nick Loftin (LF): 4 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .193 AVG, .234 OBP, .386 SLG.
- Freddy Fermin (C): 3 AB, 0 R, 2 H, 0 RBI, 0 HR, 1 BB, 0 K, .275 AVG, .333 OBP, .356 SLG, 2B (7).
- Tyler Tolbert (CF): 2 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .083 AVG, .154 OBP, .083 SLG.
- Kyle Isbel (PH-CF): 2 AB, 0 R, 1 H, 0 RBI, 0 HR, 0 BB, 1 K, .240 AVG, .263 OBP, .357 SLG.
- Team Stats: 34 AB, 4 R, 11 H, 4 RBI, 3 HR, 3 BB, 7 K, 1-9 RISP, 9 LOB, 0 E, SB (Witt Jr.), CS (India).
Pirates Pitching
- Bailey Falter: 4.2 IP, 6 H, 3 R, 3 ER, 2 BB, 3 K, 2 HR, 74-50 PC-ST, 3.79 ERA.
- Brandon Ashcraft: 2.1 IP, 3 H, 0 R, 0 ER, 0 BB, 3 K, 0 HR, 45-32 PC-ST, 2.05 ERA.
- Ian Mattson (L, 2-1): 1.0 IP, 2 H, 1 R, 1 ER, 1 BB, 1 K, 1 HR, 17-12 PC-ST, 1.89 ERA.
- Team Stats: 8.0 IP, 11 H, 4 R, 4 ER, 3 BB, 7 K, 3 HR, 136-94 PC-ST.
Royals Pitching
- Kris Bubic: 5.2 IP, 6 H, 3 R, 3 ER, 2 BB, 6 K, 0 HR, 83-52 PC-ST, 2.48 ERA.
- John Schreiber: 1.1 IP, 1 H, 0 R, 0 ER, 0 BB, 1 K, 0 HR, 22-13 PC-ST, 3.34 ERA.
- Lucas Erceg (W, 4-2): 1.0 IP, 0 H, 0 R, 0 ER, 0 BB, 1 K, 0 HR, 10-7 PC-ST, 2.04 ERA.
- Carlos Estevez (S, 25): 1.0 IP, 1 H, 0 R, 0 ER, 0 BB, 1 K, 0 HR, 16-11 PC-ST, 2.03 ERA.
- Team Stats: 9.0 IP, 8 H, 3 R, 3 ER, 2 BB, 9 K, 0 HR, 131-83 PC-ST.
Critical Moments
- 2nd Inning (PIT 0, KC 1): Perez’s solo homer (444 feet) off Falter opened the scoring.
- 4th Inning (PIT 0, KC 3): Caglianone’s two-run homer (466 feet) off Falter scored Garcia.
- 6th Inning (PIT 3, KC 3): Cruz’s RBI groundout and Hayes’ two-RBI single off Bubic tied the game, with Pham, McCutchen, and Reynolds scoring.
- 8th Inning (PIT 3, KC 4): Perez’s solo homer (426 feet) off Mattson gave the Royals the lead.
- 9th Inning (PIT 3, KC 4): Frazier’s single off Estevez put a runner on, but the Pirates couldn’t capitalize.
Game 3: Kansas City Royals 4, Pittsburgh Pirates 3 (July 9, 2025)
Game Summary
The Royals completed the sweep with a 4-3 walk-off win over the Pirates on July 9, 2025, moving to 45-48 (22-24 home), while Pittsburgh fell to 38-55 (12-34 away). Nick Loftin’s two-run homer in the 7th and game-winning RBI single in the 9th sealed the victory, with Jake Caglianone adding a solo homer in the 2nd. Oneil Cruz and Nick Gonzales homered for Pittsburgh, but Dennis Santana (2-2) took the loss. Carlos Estevez (3-2) earned the win.
Key Player Stats: Pittsburgh Pirates
- Spencer Horwitz (1B): 3 AB, 0 R, 0 H, 0 RBI, 0 HR, 1 BB, 0 K, .240 AVG, .303 OBP, .347 SLG.
- Jared Triolo (PR-1B): 0 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .159 AVG, .250 OBP, .268 SLG.
- Tommy Pham (LF): 3 AB, 0 R, 1 H, 0 RBI, 0 HR, 1 BB, 1 K, .240 AVG, .315 OBP, .321 SLG, 2B (7).
- Bryan Reynolds (DH): 4 AB, 0 R, 0 H, 1 RBI, 0 HR, 0 BB, 1 K, .226 AVG, .291 OBP, .374 SLG. Reynolds drove in a run in the 8th.
- Nick Gonzales (2B): 4 AB, 1 R, 1 H, 1 RBI, 1 HR, 0 BB, 0 K, .282 AVG, .336 OBP, .462 SLG, HR (4). Gonzales’ 7th-inning homer gave Pittsburgh a lead.
- Oneil Cruz (CF): 4 AB, 1 R, 1 H, 1 RBI, 1 HR, 0 BB, 1 K, .203 AVG, .314 OBP, .410 SLG, HR (16). Cruz’s 4th-inning homer tied the game.
- Ke’Bryan Hayes (3B): 4 AB, 0 R, 1 H, 0 RBI, 0 HR, 0 BB, 2 K, .240 AVG, .288 OBP, .298 SLG, 2B (8).
- Jack Suwinski (RF): 4 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 2 K, .109 AVG, .241 OBP, .130 SLG.
- Henry Davis (C): 3 AB, 0 R, 1 H, 0 RBI, 0 HR, 0 BB, 0 K, .206 AVG, .263 OBP, .341 SLG, 2B (5), CS.
- Adam Frazier (PH): 1 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .254 AVG, .318 OBP, .336 SLG.
- Joey Bart (C): 0 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 0 K, .234 AVG, .335 OBP, .288 SLG.
- Isiah Kiner-Falefa (SS): 2 AB, 1 R, 1 H, 0 RBI, 0 HR, 1 BB, 0 K, .271 AVG, .317 OBP, .336 SLG. Kiner-Falefa scored in the 8th.
- Team Stats: 32 AB, 3 R, 6 H, 3 RBI, 2 HR, 3 BB, 7 K, 0-6 RISP, 5 LOB, 1 E (Davis), CS (Davis).
Key Player Stats: Kansas City Royals
- Jonathan India (DH): 4 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 2 K, .243 AVG, .326 OBP, .338 SLG.
- Bobby Witt Jr. (SS): 4 AB, 0 R, 1 H, 0 RBI, 0 HR, 0 BB, 1 K, .295 AVG, .345 OBP, .500 SLG.
- Vinnie Pasquantino (1B): 4 AB, 0 R, 1 H, 0 RBI, 0 HR, 0 BB, 1 K, .270 AVG, .330 OBP, .437 SLG.
- Maikel Garcia (3B): 4 AB, 1 R, 1 H, 0 RBI, 0 HR, 0 BB, 0 K, .305 AVG, .364 OBP, .464 SLG. Garcia scored the winning run.
- Salvador Perez (C): 3 AB, 1 R, 1 H, 0 RBI, 0 HR, 0 BB, 1 K, .239 AVG, .280 OBP, .405 SLG. Perez scored in the 7th.
- Jake Caglianone (RF): 4 AB, 1 R, 1 H, 1 RBI, 1 HR, 0 BB, 0 K, .148 AVG, .203 OBP, .261 SLG, HR (3). Caglianone’s 2nd-inning homer opened scoring.
- Nick Loftin (2B): 4 AB, 1 R, 2 H, 3 RBI, 1 HR, 0 BB, 0 K, .202 AVG, .244 OBP, .405 SLG, HR (3). Loftin’s homer and walk-off single were clutch.
- John Rave (LF): 2 AB, 0 R, 0 H, 0 RBI, 0 HR, 1 BB, 0 K, .183 AVG, .275 OBP, .233 SLG.
- Kyle Isbel (CF): 3 AB, 0 R, 0 H, 0 RBI, 0 HR, 0 BB, 1 K, .237 AVG, .261 OBP, .356 SLG.
- Team Stats: 32 AB, 4 R, 7 H, 4 RBI, 2 HR, 1 BB, 6 K, 1-4 RISP, 5 LOB, 1 E (Erceg), PB (Perez).
Pirates Pitching
- Mitch Keller: 6.2 IP, 4 H, 3 R, 2 ER, 1 BB, 5 K, 2 HR, 93-63 PC-ST, 3.58 ERA.
- Caleb Ferguson: 0.1 IP, 0 H, 0 R, 0 ER, 0 BB, 0 K, 0 HR, 1-1 PC-ST, 2.77 ERA.
- Dennis Santana (L, 2-2): 1.1 IP, 2 H, 1 R, 1 ER, 0 BB, 1 K, 0 HR, 25-20 PC-ST, 1.60 ERA.
- Ian Mattson: 0.0 IP, 1 H, 0 R, 0 ER, 0 BB, 0 K, 0 HR, 2-1 PC-ST, 1.50 ERA.
- Team Stats: 8.1 IP, 7 H, 4 R, 3 ER, 1 BB, 6 K, 2 HR, 121-85 PC-ST.
Royals Pitching
- Seth Lugo: 6.0 IP, 4 H, 2 R, 2 ER, 1 BB, 5 K, 2 HR, 82-47 PC-ST, 2.67 ERA.
- Angel Zerpa: 1.0 IP, 0 H, 0 R, 0 ER, 0 BB, 2 K, 0 HR, 13-9 PC-ST, 4.03 ERA.
- Lucas Erceg (BS, 3): 1.0 IP, 1 H, 1 R, 1 ER, 2 BB, 0 K, 0 HR, 22-10 PC-ST, 2.10 ERA.
- Carlos Estevez (W, 3-2): 1.0 IP, 1 H, 0 R, 0 ER, 0 BB, 0 K, 0 HR, 11-8 PC-ST, 2.08 ERA.
- Team Stats: 9.0 IP, 6 H, 3 R, 3 ER, 3 BB, 7 K, 2 HR, 128-74 PC-ST.
Critical Moments
- 2nd Inning (PIT 0, KC 1): Caglianone’s solo homer (421 feet) off Keller gave the Royals the lead.
- 4th Inning (PIT 1, KC 1): Cruz’s solo homer (458 feet) off Lugo tied the game.
- 7th Inning (PIT 2, KC 3): Gonzales’ solo homer (427 feet) off Lugo gave Pittsburgh a 2-1 lead. Loftin’s two-run homer (359 feet) off Keller scored Perez to retake the lead.
- 8th Inning (PIT 3, KC 3): Reynolds’ fielder’s choice off Erceg scored Kiner-Falefa, tying the game.
- 9th Inning (PIT 3, KC 4): Loftin’s walk-off RBI single off Santana scored Garcia, with Perez on base.
Head-to-Head Analysis
The Royals swept the series 3-0, outscoring the Pirates 17-9 while hitting 9 home runs to Pittsburgh’s 3. Kansas City averaged 10.0 hits per game (30 total) compared to Pittsburgh’s 6.0 (18 total), with a slight edge in batting average (.294 vs. .191). The Royals’ 1.67 walks per game compared to Pittsburgh’s 2.67, but Kansas City’s pitching staff posted a 3.33 ERA (9 ER in 24.0 IP) compared to Pittsburgh’s 5.04 ERA (12 ER in 24.1 IP). The Royals’ bullpen, led by Estevez (1 win, 1 save) and Erceg (1 win), was clutch, while Pittsburgh’s bullpen struggled, with Mattson and Santana taking losses.
Series Standouts
Kansas City Royals
- Salvador Perez: 4 HR, 4 RBI across the series; two homers in Game 2 (444 feet, 426 feet).
- Nick Loftin: Game 3 hero with a two-run homer and walk-off RBI single; 2 HR, 4 RBI total.
- Bobby Witt Jr.: 3-for-10, 1 HR, 3 RBI, 2 R; two-run homer in Game 1.
- Noah Cameron: 7.0 IP, 2 ER, 7 K in Game 1 win.
Pittsburgh Pirates
- Tommy Pham: 5-for-10, 1 HR, 2 RBI, 2B; three hits in Game 2.
- Oneil Cruz: 2-for-12, 1 HR, 2 RBI; clutch homer in Game 3.
- Ke’Bryan Hayes: 2-for-12, 2 RBI; two-RBI single in Game 2 tied the game.
Team Performance Context
- Kansas City Royals (46-48, 23-24 Home by July 9): The sweep bolstered the Royals’ push for a wild-card spot, with their offense (9 HRs in the series) and bullpen (Estevez, Erceg) shining. Perez’s power and Loftin’s clutch hitting highlight their depth.
- Pittsburgh Pirates (38-56, 12-35 Away by July 9): The Pirates’ road struggles continued, dropping to 12-35 away. Despite offensive sparks from Pham and Cruz, their bullpen’s late-game failures (4.50 ERA in series) and low RISP conversion (4-19) hindered them.
Injury and Roster Notes
- Kansas City Royals: No major injuries reported; John Rave and Luke Maile saw limited action due to roster decisions.
- Pittsburgh Pirates: No major injuries noted; Joey Bart and Henry Davis split catching duties, with Adam Frazier and Spencer Horwitz used as pinch-hitters.
Conclusion
The Kansas City Royals swept the Pittsburgh Pirates 3-0 in a high-energy series, winning 9-3 on July 7, 4-3 on July 8, and 4-3 on July 9, 2025. Salvador Perez (4 HRs), Nick Loftin (clutch Game 3 hits), and Bobby Witt Jr. (3 RBI) powered the Royals, with Noah Cameron’s Game 1 gem and Carlos Estevez’s bullpen work sealing the victories. Pittsburgh’s Tommy Pham and Oneil Cruz provided offensive highlights, but their bullpen faltered, and RISP struggles cost them. The series showcased Kansas City’s playoff potential and Pittsburgh’s rebuilding challenges. For full recaps, visit ESPN, MLB.com, or Baseball-Reference.

