KANSAS CITY, Mo. -- Boof Bonser didn't pitch a pretty game. Then again, he rarely does.
The Twins' right-hander scraped his way to just his second victory in three months and Jason Kubel and Justin Morneau each drove in a pair of runs as Minnesota defeated the Kansas City Royals 4-2 on Monday night.
"I was just battling all night, but it's definitely a step in the right direction after the last outing I had," Bonser said. "I'm a little bit happier. I wouldn't say things are going my way, but it's better than my last outing I had."
Bonser was making his first start since Sept. 2, when the Royals knocked him out with five runs and seven hits in 1 2/3 innings. He's given up at least three runs in 14 of his last 18 starts, and was 1-10 over his past 15.
But Bonser (7-12) held the Royals to two runs and five hits over five innings on this night, striking out six and walking four with a hit batter.
"It wasn't a beautiful thing, but he got through five innings and didn't give up many runs," Twins manager Ron Gardenhire said. "It's a process. He got into too many deep counts, walking guys and it seemed like the leadoff man was on every inning. He had too many men on base. We want to see better than that. He had to battle through it and make pitches when he had to."
The Twins' bullpen took over after the fifth, with four relievers scattering four hits the rest of the way.
"It wasn't an easy task," Bonser said. "I'm sure they saw that. I know that. If I was coasting through five innings, I'd probably go out for another inning, but the fourth and fifth were tough."
The Royals stranded 10 runners and have lost six straight, their longest losing streak since dropping seven in a row from May 24-30.
The defending AL Central champions, who have been in the playoffs four of the past five seasons, are still two games below .500.
"You don't want to forget what it's like to win," Morneau said. "Losing can be contagious. We expect to be in the race from the start of the season. For it to be September and out of it, that's tough."
Minnesota went ahead 2-0 in the third when Alexi Casilla singled and Jason Bartlett walked ahead of Kubel's two-run double.
Mike Sweeney's two-out double in the fifth scored Tony Pena Jr. and David DeJesus, but Morneau's opposite-field double off rookie left-hander Neal Musser in the sixth drove in Torii Hunter with the go-ahead run.
"I happened to lose the off speed stuff," Bonser said of the fifth. "I hit a guy and walked a guy and Sweeney hit the double that just fell in."
Morneau's two-out single in the seventh scored Bartlett, who led off the inning with a single. He went to second on Joe Mauer's ground out and to third on a Hunter infield single.
Joe Nathan pitched a perfect ninth to log his 31st save in 35 opportunities. Nathan has 24 career saves in 26 chances against the Royals.
Billy Buckner, who was making his second big league start, gave up three runs and three hits, but walked five and threw just 50 of 95 pitches for strikes. Buckner (0-1) struck out four in 5 1/3 innings.
"I need to cut back on the walks," Buckner said. "I had two strikes on a lot of their guys and couldn't put them away. I've got to throw more than 5 1/3 innings."
The Royals loaded the bases on singles by Mark Teahen, Alex Gordon and Joey Gathright in the eighth, but Matt Guerrier struck out pinch hitter Esteban German on three pitches to end the inning.
The Royals had Teahen at third and John Buck at first with one out in the second, but Bonser struck out Gathright and Pena to strand the runners.
CF David DeJesus was hit by a pitch in the fifth, bringing his season total to 19, which is a Royals record. C Mike Macfarlane in 1994 and SS Angel Berroa in 2003 were hit by 18 pitches. The Royals have been plunked a major league-leading 82 times. ... Kubel, who had a two-hit game Sunday against the White Sox, also doubled in the first for his 25th multi-hit game. ... Teahen went 1-for-1 with three walks.