KANSAS CITY, Mo. -- Fernando Tatis surfaced again Thursday night after all but disappearing from baseball for two years.
"This guy was a heck of a player and then he kind of dropped off the face of the earth for a couple of years and now he's back, so it's nice to see him back," said Kevin Millar, who homered in the sixth to put the Orioles ahead 3-2. "I wish him good things. He's a great guy, a great teammate. I'm happy for him to be back."
Tatis hit 34 home runs, drove in 107 runs and became the first player to hit two grand slams in the same inning in 1999, with St. Louis. Then groin, shoulder and knee injuries took their toll on him and Tatis missed the final 92 games of the 2003 season with inflammation in his chest wall.
"I'm very excited," said Tatis, who had his first multi-hit game since May 7, 2003. "I'm healthy. I'm 100 percent. I just wanted to go out and try to have a good game, just be myself. The best part is we won the game."
Tatis, who was released by Tampa Bay in spring training in 2004 and did not play professional baseball the past two seasons, doubled in the seventh and scored on a fielding error by third baseman Mark Teahen.
In the Orioles' two-run eighth, Javy Lopez led off with a double, advanced on Corey Patterson's bunt single and scored on pinch-hitter Nick Markakis' groundout. Tatis drove in the second run with a groundout to make it 6-3.
Jeff Conine, who had four hits Wednesday, had a two-run single in the third as the Orioles took a 2-0 lead.
"I'm not surprised," Conine said of Tatis' performance. "He's obviously got a track record. He's a pretty good baseball player. It was nice to see him have a good night. He was with us in spring training and was biding his time."
The 31-year-old third baseman signed a minor league contract with the Orioles last November and was invited to spring training. He began the season with Triple-A Ottawa, hitting .298 in 90 games before he was promoted on Friday.
"He came into shape and was in good shape," Baltimore manager Sam Perlozzo said. "He went to Triple-A and went about his business as a professional and earned his way up."
Teahen's error gave the Orioles a 4-2 lead and Berroa's second sacrifice fly made it a one-run game in the seventh.
Grudzielanek had an RBI single in the bottom of the eighth.
Orioles right-hander Rodrigo Lopez, who entered the game with a 6.73 ERA, the second-highest in the American League, allowed two runs and 11 hits in 5 2/3 innings, but the Royals stranded 10 runners in the first six innings. Lopez (7-11) lowered his ERA to 6.59.
Grudzielanek and Stairs each had three of the Royals' 14 hits, but they were just 4-for-13 with runners in scoring position.
"Four runs on 14 hits, we definitely left some guys out there," Teahen said. "We had 14 hits, but we've got to come up with a few clutch hits and capitalize on that."
Jimmy Gobble gave up two runs and five hits in five innings before being replaced by Duckworth, who was making his first relief appearance of the season after eight starts.
"The main focus was make sure I got ahead and was trying to induce contact early," Gobble said. "It was better than I had before, but five innings, you want more."
Chris Ray worked a perfect ninth to earn his 26th save in 27 opportunities.
The Orioles, who have lost 30 of their past 46 road games, took two of three from the Royals to win only their fourth road series.
- Royals DH Mike Sweeney, who has missed 77 games with a bulging disk, went 1-for-7 with a home run, a walk and two strikeouts in two rehab games with Class-A Burlington in the Midwest League. Sweeney was off Thursday and will join the Double-A Wichita on Friday.
- After 103 games last year, the Orioles were 51-52. This year they are 47-56.
- RHP Joe Nelson's wild pitch in the seventh was the Royals' 57th, which leads the majors.