Witt connected for a solo homer in the second inning. The prized rookie extended his hitting streak to 11 games.
“I thought it was in the gap for a double,” Witt said. “I should have hit that first pitch that was right down the middle. It’s always good to get the first of something out of the way, no matter what it is.”
Witt had two hits, two RBIs and scored twice. MJ Melendez got a hit in his big league debut and Edward Olivares had a career-high four of the Royals’ 15 hits.
Keller (1-2) allowed four hits in 6 1/3 innings, walked three and struck out two. He permitted a baserunner in every inning but sixth, but never more than one until the seventh.
“Whenever guys got on I tried to bear down and make pitches,” Keller said. “My fastball command wasn’t as (good) as it could be, but to able to go to the slider and get outs was big for me today.”
Witt homered off Dakota Hudson (2-2), hitting an 0-1 changeup 417 feet into the bleachers in left center.
Witt came up in the fourth with no outs and runners on the corners and grounded into a double play that scored a run.
Hudson left after issuing a leadoff walk in the seventh to Nicky Lopez with the Royals ahead 2-0. Olivares hit an RBI trouble and Andrew Benintendi, Whit Merrifield, Witt and Michael Taylor also had RBIs in the inning.
“I was really happy to see (a five-run inning in the seventh) after we had a chance early on and let it slip through our fingers,” Kansas City manager Mike Matheny said. “Brad was fantastic. It was probably not his sharpest stuff, but he was really good.”
The Cards got a run in the eighth on Tyler O’Neill’s single.
Cardinals SS Edmundo Sosa, along with three members of the Cardinals medical staff and one clubhouse attendant, tested positive for COVID-19. Sosa was placed on the COVID-19 injured list.
Cardinals: C Yadier Molina was scratched with non-COVID illness. Manager Oliver Marmol was confident he’d be back in the lineup on Wednesday. Molina was replaced in the starting lineup by Andrew Knizner.
Royals: 1B Carlos Santana was a late scratch with right ankle soreness. His spot in the lineup was taken by Ryan O’Hearn.
The Cardinals and Royals will conclude their two-game series Wednesday with an afternoon contest. The game was originally scheduled for a 6:10 p.m. start, but the weather forecast led to the change. The Cardinals will send RHP Adam Wainwright (2-3, 4.00 ERA) to the mound. The Royals will counter with LHP Kris Bubic (0-2, 10.50 ERA).