Tommy Gilligan-USA TODAY Sports

Alec Marsh held the host Baltimore Orioles to two hits and one run across a career-high seven innings as the Kansas City Royals picked up their first road victory of the season, winning 4-1 on Tuesday night.

Maikel Garcia knocked in a total of three runs with a double and a triple for the Royals.

Baltimore starter Cole Irvin (0-1) lasted five innings, giving up four runs on seven hits in his season debut. He walked two and fanned three.

Colton Cowser had two of the Orioles' three hits.

Marsh, a right-hander, struck out five and walked one. He is in his second big-league season after working six full innings only once last year. His ninth career start turned into a beauty in his first-ever appearance against Baltimore.

John Schreiber and Will Smith each worked an inning out of the Royals' bullpen. Smith recorded his first save of the season.

Salvador Perez and Nick Loftin both joined Garcia with two hits for Kansas City.

The Royals scored three runs in the second inning, with Loftin's single knocking in the first and Garcia following with a two-run double.

The Orioles got on the board by using back-to-back doubles from Jordan Westburg and Cowser to pull within 3-1 in the third inning.

Garcia restored Kansas City's three-run cushion with a triple that drove in Loftin in the fourth inning. Garcia nearly had a home run, with the ball hitting high off the right-center-field wall.

The Orioles, who beat the Royals 6-4 a night earlier, managed only four baserunners in Tuesday's game.

Baltimore relievers Dillon Tate, Jacob Webb and Jonathan Heasley combined for four shutout innings. Heasley, who was making his Baltimore debut after spending the past three seasons with the Royals, didn't allow a hit and struck out two in two innings, though he hit former teammate Bobby Witt Jr. with a pitch.

More must-reads:

TODAY'S BEST
How Steelers reportedly expect Aaron Rodgers saga will end
Juan Soto's bat speed decline threatens Mets' $765 million investment
NFL team executive expands on what Browns' Shedeur Sanders did wrong before draft
Insider suggests four-time Pro Bowl option for Steelers if Aaron Rodgers doesn't sign
Watch: Pacers, Tyrese Haliburton eliminate the Bucks in OT
Stanley Cup playoffs takeaways: Hurricanes advance, panic time for Maple Leafs
Jayson Tatum's historic game helps send Celtics to Eastern Conference semis
Yankees offense goes nuclear in blowout win
Pirates ace Paul Skenes explains why he's not concerned about potential injuries
Steelers may have found another steal in UDFA pool as Pittsburgh lands an athletic freak
49ers sign star TE to four-year extension
Spurs' Stephon Castle runs away with Rookie of the Year Award
Kings to make Doug Christie new head coach in full-circle moment
Vikings QB J.J. McCarthy sends strong message about whether he's ready to start in 2025
Pistons' Cade Cunningham comes alive in fourth quarter to stave off elimination vs. Knicks
Cubs defeat Pirates with an impressive night at the plate
Watch: Blue Jays' Daulton Varsho makes potential catch of the year
Watch: Yankees open game with three straight home runs ... again
Ousmane Dembele strike lifts PSG over Arsenal in first leg of Champions League semifinal
Report: CB Jaire Alexander might stick with Packers

Want more sports news?

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