MINNEAPOLIS -- When it was over and the 38,072 fans had shuffled away, leaving the Metrodome sucked empty of emotion and excitement, it was the Royals who were basking in the moment.

They dealt another blow to the Minnesota Twins' title ambitions on Saturday, holding onto a 4-2 victory as right-hander Gil Meche notched his 14th win and the bullpen scrambled to preserve it.

"It was fun," Meche said. "I haven't been in an environment like this since Opening Day in Detroit, so it's fun to play in here. The fans are ridiculously loud. When you're on that mound, they start screaming, so it's a good time."

A good time for the Royals. The Twins, though, took a second straight loss and did not increase their half-game lead over the Chicago White Sox, who also lost, in the American League Central. So the battle rages into Sunday.

The Royals, trying to nail down fourth place, remained a half-game ahead of the Detroit Tigers, who also won.

But the Royals continued their merry dash through September with one game remaining.

The numbers are impressive: five wins in a row, 13 wins in the last 15 games, eight straight road wins -- most since 1977's 11-game streak -- and an 18-7 record in September to match the 1985 World Series championship club's win total.

The numbers for Meche are impressive as well. He finished with a 14-11 record, edging Zack Greinke's win total by one. Meche also achieved a sub-4.00 ERA, 3.98.

"That was kind of my goal today. It's just like hitting 99 RBIs instead of 100. I just wanted to be right there. It's a little bit better," Meche said.

One other thing: In his friendly battle with Greinke, Meche matched his teammate's strikeout total of 183, though Meche was hoping to end up on top.

"I feel like I've had an unbelievable year," Meche said. "If I could take away my first month, my season's incredible. It just put me in a bad spot with numbers. I won one game and had an 8.00 ERA. It was just a horrible start, and luckily, I got on a good roll."

Notably, after June 10, his record was 11-3.

His latest win got off to a unsteady start when the Twins took a 2-0 lead. The second run came after first baseman Ryan Shealy dropped a liner from Denard Span in the third inning.

"Gil threw the ball so well, they really shouldn't have had any runs off him," Shealy said. "I probably catch that ball 99 out of 100 times, and it just hit off the end of my glove."

The Royals had a chance to break the game open in the sixth, when they got four straight singles to start the inning against reliever Boof Bonser. That resulted in one run, a 2-2 tie and the bases loaded with no outs.

But that was all the Royals got. With lefty Craig Breslow pitching, Alex Gordon momentarily stunned the fans with a grand-slam bid. But the moon shot into the upper deck sailed barely foul.

By how much?

Gordon, smiling, held his fingers about two inches apart. OK, maybe he was exaggerating, but it was pretty close.

Anyway, the count remained 3-2, then Gordon struck out.

Right-hander Matt Guerrier took over for a couple more spine-tingling outs with the bases loaded. Brandon Harris went behind third base for John Buck's grounder and threw for a forceout at the plate. Mitch Maier followed with a sizzling liner that first baseman Justin Morneau snagged at his shoetop.

But, in the seventh, the Royals' luck turned. Aviles and Alberto Callaspo, extending his hitting streak to 18 games, each singled against Guerrier. He was relieved by Jesse Crain, who struck out Guillen, although both runners advanced as strike three was a wild pitch.

Shealy hit a pop fly behind first base that the desperate Morneau couldn't catch. The ball glanced off his glove for a single and two runs that put the Royals up, 4-2.

"It was an ugly way to come through, but it came through nonetheless," Shealy said.

Meche left after Gordon's throwing error and Span's walk began the Twins' seventh. Lefty John Bale got Alexi Casilla to pop up a bunt and, after a walk to Joe Mauer, pitching coach Bob McClure paid a visit to the mound.

"Mac came out and said, 'This is a good guy to double up,'" Bale said. "So we said, 'All right, let's get a double play right here.'"

And Morneau obliged on the first pitch, rolling into one of four double plays the Royals pulled off.

As the Metrodome crowd rocked the joint, reliever Ramon Ramirez navigated around two baserunners in the eighth. That brought closer Joakim Soria in for the ninth.

But there was no signature 1-2-3 inning for Soria. He walked the first two batters with the Twins' 3-4 hitters coming up. Yet he got Mauer to rap in a double play and retired Morneau on a fly ball to left.

Soria had his 42nd save.

The bullpen had survived three chancy innings.

"Today I felt like we were pitching in the playoffs, the way the crowd was into it and everything," Bale said. "I guess we really are -- to spoil it for them."