Peter Aiken-USA TODAY Sports

Johan Oviedo recorded his first career shutout and Ke'Bryan Hayes went 4-for-4 with a walk and an RBI as the visiting Pittsburgh Pirates opened a three-game series against the Kansas City Royals with a 5-0 win on Monday.

Oviedo (8-13) allowed two hits with two walks and five strikeouts while throwing a career-high 112 pitches for Pittsburgh, which snapped a two-game losing skid. He tossed a complete game for the first time in his 53rd career start.

Kansas City lost for the eighth time in nine games and fell a season-high 51 games under .500. The game was completed in a crisp 2 hours, 16 minutes.

The Pirates claimed an early lead against Zack Greinke (1-13), who allowed the first three batters he faced in the second inning to reach base safely. Alfonso Rivas followed with a double-play grounder that scored Endy Rodriguez.

Pittsburgh tacked on a run in the third inning on consecutive doubles by Ji Hwan Bae and Hayes to begin the inning. Hayes has a team-high 18 RBIs this month, in 23 games.

Greinke made his second appearance since returning from the injured list, and he gave up two runs on six hits over 4 2/3 innings. He walked two and struck out two.

The Pirates extended their lead with two outs in the seventh inning on back-to-back RBI singles by Andrew McCutchen and Joshua Palacios against Taylor Hearn.

Kansas City struggled to generate any offense against Oviedo, who won for the fifth time in his past seven starts. Hayes turned in the defensive play of the game in the sixth inning when he made a diving grab of Bobby Witt Jr.'s grounder to third and got a forceout at second.

Pittsburgh pushed another run across in the eighth inning against Jackson Kowar when Jack Suwinski hit a leadoff single and scored on Rivas' one-out double.

Kansas City's only two hits came on MJ Melendez's two-out single in the third and Drew Waters' leadoff single in the fifth.

Rivas and Bae had two hits apiece for Pittsburgh, which finished with 12 hits.

More must-reads:

TODAY'S BEST
Caitlin Clark reveals thoughts about not being on Olympic team
Giants tight end announces decision on NFL future
Chiefs WR Rashee Rice: 'I’ve learned so much'
Wrigley Field match breaks the NWSL attendance record
Ryan Garcia arrested on vandalism charge
WWE preparing for potential loss of elite high-flyer
Watch: Mets mount wild rally, turn incredible double play to stun Phillies
Flames trying to discreetly move former Vezina Trophy runner-up
Watch: Carlos Alcaraz makes history with first French Open title
White Sox designate former Rule 5 pick for assignment
Former Sharks player 'deep in the process' of becoming team's head coach
Sergei Bobrovsky leads Panthers to Game 1 victory over Oilers
Caitlin Clark reportedly will be left off Olympic roster
Iga Swiatek cruises to third consecutive French Open title
Watch: 17-1 underdog Dornoch wins Belmont Stakes
Mavericks HC gives bold Jaylen Brown take
Scottie Scheffler overcomes terrible hole to keep lead at Memorial
Mets' Kodai Senga won't return before All-Star break
Shane van Gisbergen makes literal late push to win Xfinity Series race at Sonoma
Lionel Messi addresses status for 2026 World Cup

Want more Pirates news?

Join the hundreds of thousands of fans who start their day with Yardbarker's Morning Bark, the best newsletter in sports.