Brad Keller pitched seven-plus innings of two-hit baseball, Jorge Soler hit a three-run homer and the Kansas City Royals beat the St. Louis Cardinals 8-2 Wednesday in the first game of a doubleheader.

Severe storms around St. Louis forced Tuesday night's game to be postponed and created the day-night twinbill.

Keller (3-5) snapped a six-start winless streak. He pitched around leadoff walks in the first, second and fourth innings and had retired 12 of 13 batters before Matt Carpenter walked and Paul Goldschmidt singled to start the eighth, ending Keller's day.

Keller matched his longest outing of the season. He struck out three, walked four and hit two batters.

Kevin McCarthy relieved and gave up a two-run double to Marcell Ozuna. The Cardinals finished with four hits, two by Matt Wieters.

Soler's drive into the left field seats off Michael Wacha (3-2) capped a six-run third and made it 7-0. Wacha has allowed 18 earned runs and 30 hits in 25 1/3 innings in five starts since returning from the injured list with left knee patellar tendinitis.

Whit Merrifield had two hits, drove in a run and scored once. Nicky Lopez reached three times and scored twice and Hunter Dozier hit a pair of sacrifice flies.

ROSTER MOVES

Royals: McCarthy, a right-hander, was recalled from Triple-A Omaha after RHP Heath Fillmyer was optioned on Sunday. RHP Jake Newberry will be the 26th man for the second game.

Cardinals: RHP Luke Gregerson cleared waivers and was given his unconditional release, making him a free agent. OF Lane Thomas will be the 26th man for the second game.

UP NEXT

RHP Homer Bailey (4-4, 5.36 ERA) will get the start for the Royals in the nightcap against RHP Adam Wainwright (3-4, 4.75 ERA). Bailey is 5-16 with a 5.56 ERA against St. Louis. Wainwright will be facing Kansas City for the first time since 2016.

More From KHMO-AM 1070, News-Talk-Sports