Detroit starter Alex Faedo (1-5) slogged through a 37-pitch first inning, walking the bases full after Witt tied it with a double.
Witt delivered a second hit and RBI in the second inning, the third straight hit of the frame, giving Kansas City the lead.
Faedo was lifted after again loading the bases via walk. He recorded five outs while throwing 60 pitches, allowing four runs on four hits and four walks.
Ryan O’Hearn greeted reliever Tyler Alexander with a two-run single as the Royals batted around for a 4-1 second-inning advantage.
“We kept having really good at-bats,” Royals manager Mike Matheny said. “A couple of guys had real big days. Bobby had a real big day and was able to come through in big situations for us.”
MJ Melendez, who batted leadoff as a catcher — a franchise first — expanded the lead with a sacrifice fly the next inning.
Royals starter Daniel Lynch was greeted rudely in his return from the injured list, with Javier Baez drilling a first-pitch RBI double to score Robbie Grossman, who reached via error. Grossman collected singles in each of his next three at-bats.
Lynch struggled through four innings, allowing three runs on six hits, striking out three. He left after Grossman’s leadoff single in the fifth with a cut on his middle finger.
“He had a cut in a different spot than he had before,” Matheny said. “It was getting in the way of him throwing the slider.”
Angel Zerpa (1-0) earned his first major league win with two innings of scoreless relief. He was the second of four Kansas City relievers.
Miguel Cabrera’s fifth-inning RBI double cut the Royals lead to 5-3. It was his 605th career double, tying him with Paul Molitor for 15th place on the career list, and his 1836th RBI, tying Cabrera with Ken Griffey, Jr., also for 15th place.
The Tigers have lost four straight.
Injured Royals infielder Whit Merrifield didn’t play, ending his consecutive games streak at a franchise-record 553 — it dated to June 24, 2018, and was the longest active string in the majors.
“It’s been a great run for Whit,” Matheny said. “It’s just been impressive the way he’s been able to go about it.”
Merrifield exited Sunday’s game with right toe discomfort. He was fitted with a walking boot and is expected to be placed on the injured list due to a bone bruise and ligament swelling.
“It’s been a long run and I’m proud of it,” he said.
In the opener, Keller (5-9) permitted only three singles while fanning eight. He has won three straight starts and four of his last five.
Scott Barlow earned his 14th save with a scoreless ninth.
Pasquantino lined the first pitch from Michael Pineda (2-4) into the right-field bullpen with two outs in the fourth to open the scoring. It was his second career homer, both against Pineda, and both on the first pitch in the fourth inning.
“I tried to execute my fastball and he got it,” Pineda said. “This is one of the pitches I missed today. I tried to locate my fastball a little more away because I know he wanted to swing.”
Pasquantino broke a 1-all tie with a sixth-inning single that drove in Witt.
Pineda worked into the sixth inning for only the second time in eight starts, allowing seven hits and three runs.
Riley Greene had two of Detroit’s four singles and scored their lone run in the sixth on Keller’s two-out wild pitch.
Monday’s doubleheader was the Tigers’ sixth of the season, second most in the majors behind Cleveland’s seven. The Royals swept a split doubleheader for the first time since taking both games against Tampa Bay July 7, 2015.
Royals LHP Foster Griffin was designated for assignment.
RHP Beau Brieske (2-6, 4.16 ERA) takes the mound for Detroit on Tuesday against LHP Kris Bubic (1-6, 6.84).
More AP MLB: https://apnews.com/hub/MLB and https://twitter.com/AP_Sports