KANSAS CITY, Mo. -- Just a few years ago, Carl Pavano never thought he's earn his 100th career victory.
In four years with the New York Yankees, Pavano won just nine games from 2005-08, spending more time on the disabled list than on the mound.
"I didn't really start thinking about career wins probably like until two or three years ago," Pavano said. "Some of the stuff that I've gone through the goals were always to stay healthy and go out and compete. As you get older, you see the milestones start to add up a little bit and they start to come.
"It's a pretty good milestone -- a lot of perseverance, a lot of commitment, a lot of great teams behind me to help me do it along the way," he said. "It's a fun part of a career, but I'm glad it is behind me and now I can move on to different goals."
Pavano (3-5), who was 0-3 with a 5.28 ERA in six May starts, won for the first time since April 24. He held the Royals to two runs and eight hits in his first complete game since Sept. 10, 2010, after throwing seven complete games last year. He threw 83 strikes in 112 pitches.
"I'm glad they gave me the opportunity to finish it," Pavano said. "Andy [pitching coach Rick Anderson] was ready to hand it over to a fresh bullpen, but I talked him out of it. My pitch counts the last three or four games have been up there. I felt strong, so keep pushing it."
In his 13th season, Pavano is 100-94 in 270 games -- 252 starts for five teams.
"I feel like I'm getting the consistency back," Pavano said. "I'm definitely logging more innings and more quality innings. There's a difference between logging innings and quality innings. I'm not where I want to be, but I'm on my way."
Michael Cuddyer homered off Royals rookie left-hander Danny Duffy in the third. It was Cuddyer's 18th career home run against the Royals.
Denard Span drove in Ben Revere and Drew Butera with a two-out double in the second inning. Duffy walked Butera, who was hitting .133, before Span hit a liner over center fielder Melky Cabrera's head.
Duffy (0-1), who was making his fourth big league start, departed after 96 pitches and five innings, yielding three runs on seven hits and three walks, while striking out three.
Butera's sixth inning double to left off Tim Collins scored Luke Hughes to give the Twins a 4-2 lead. Butera's sacrifice fly in the eighth scored Delmon Young to pad the Twins lead.
The Royals scored both of their runs in the fourth when they grouped four singles together with Alex Gordon and Brayan Pena driving in the runs. Billy Butler had three of the Royals' nine hits.
"Carl's the story," Twins manager Ron Gardenhire said. "He really grinded it out. He had one tough inning. His seventh, eighth and ninth were really good. It's a big night for Carl for sure."
Royals rookie first baseman Eric Hosmer had a ground-rule double in the third that bounced off the padding and a fan picked it up over the fence. The umpiring crew reviewed it and called it a double, not a home run.
"We couldn't find the holes," Royals manager Ned Yost said. "We hit balls right at guys all night long. Pavano had great location, and he did it with two pitches. He did it with a fastball and a change-up. He threw three or four sliders and he changed speeds real effectively. He got us out front, a lot."
The Royals placed RHP Sean O'Sullivan, who was 0-3 with a 13.25 ERA in his past four starts, on the 15-day disabled list Friday with biceps tendinitis. The Royals recalled RHP Jesse Chavez from Triple-A Omaha, where he was 2-3 with five saves and a 4.94 ERA in 19 games. Chavez will go to the bullpen, while the Royals have not yet announced who will replace O'Sullivan in the rotation. ... The Twins acquired OF Jeremy Reed from the Brewers for cash considerations and sent him to their Triple-A Rochester club. Reed has played in the majors with Seattle, New York Mets, Toronto and Milwaukee, including seven games with the Brewers this season. "We'll see what he has left," Gardenhire said. "If he has something that can help us, that's a good thing."