KANSAS CITY, Mo. (AP) -- Lorenzo Cain can almost taste the champagne.
Cain singled home pinch-runner Paulo Orlando in the 10th inning, and the Kansas City Royals rallied past the Seattle Mariners 4-3 Wednesday night to close in on their first division title in 30 years.
The victory reduced the Royals' magic number to two for clinching the AL Central crown. They can lock it up Thursday night with another victory over Seattle and a Minnesota loss to Cleveland.
"Champagne tomorrow, that would be nice," Cain said.
The defending AL champions have not won a division since taking the AL West in 1985 and going on to win the World Series.
While the Royals are running away with the AL Central, they won only for the eighth time in 21 games this month.
"We've definitely had a rough September up to this point," Cain said.
Alex Gordon snapped an 0-for-22 skid with a one-out single in the 10th. After Ben Zobrist was hit by a pitch from David Rollins, Orlando ran for Gordon.
Cain's single, his third hit, off Tom Zych, the eighth Seattle pitcher, sent Orlando home.
The Royals tied in the ninth when Jarrod Dyson's sacrifice fly scored Cain, who singled and moved to third on Eric Hosmer's broken-bat single to left field.
Tom Wilhelmsen gave up the run, blowing a save after converting his first 12 chances.
"We were kind of slipping in the mud a little bit and all of a sudden got some traction late in the game," Royals manager Ned Yost said.
Wade Davis (8-1) worked a spotless 10th to pick up the victory. Rollins (0-2) absorbed the loss.
Ketel Marte had three hits, including a two-run triple in the third, for the Mainers. Nelson Cruz's single to shallow left scored Marte for the final run of the inning.
Robinson Cano got his 2,000th hit with an eighth-inning single off Royals reliever Kelvin Herrera. Cano became the 14th player in major league history with 2,000 hits within his first 11 seasons.
"I feel blessed," Cano said. "Like I said, it doesn't mean too much because we were losing. Winning would have been better. I would be dancing.
"It's something that I will never forget. It's something you want when you're a kid in the backyard, to get to this moment. But we ended up losing the game; it's hard to celebrate."
The Royals went up 1-0 in the fourth when Alex Rios' sacrifice fly scored Kendrys Morales.
Left-hander Roenis Elias limited the Royals to one run and four hits over 5 1-3 innings. He walked four and struck out six.
Royals right-hander Yordano Ventura allowed three runs and six hits, four of them in the three-run fifth, over six innings.
Hosmer's single off Joe Beimel in the seventh scored Cain, who doubled, with the second Kansas City run.
"We definitely know," Hosmer said about the magic number being two. "This kind of victory can give us a boost."
Mariners: RHP Felix Hernandez, who exited his victory Sunday at Texas in the sixth inning with elbow tightness, is scheduled to pitch Saturday against the Angels, providing him with an extra day between starts.
Royals: C Salvador Perez left in the eighth with a bruised left knee. Drew Butera replaced him.
Mariners 1B Logan Morrison returned to the club after being present Tuesday for the birth of his first child. "The whole wrapping them up is crazy," Morrison said. "Oh my gosh! How the nurses do it, it's like tighter than a Chipotle burrito. When I tried to do it, it's like, this isn't working."
Mariners: LHP James Paxton has faced the Royals once, on Sept. 24, 2013. He threw seven shutout innings and struck out a career-best 10.
Royals: RHP Johnny Cueto is 0-5 in his past six starts. He has not won since Aug. 15.