Gordon's solo shot off Joel Pineiro (2-4) put the Royals on top 5-0 in the fifth en route to their sixth straight win. David DeJesus had a two-run double off reliever Ron Villone as the Royals notched their longest win streak since opening the 2003 season 9-0.
The Royals improved to 13-3 in interleague play, best in the majors. That's an impressive and unexpected mark for a team which lost 12 straight last month.
The near-capacity crowd had Kauffman Stadium rocking as always when the state rivals from St. Louis are in town, with a big chunk of the 36,000 people wearing Cardinal red. Every time either team did something, half the stadium roared. Royals fans were even more energized than usual because of their unexpected hot streak, which includes a rare three-game sweep of the Cardinals last week in Busch Stadium.
Gil Meche (6-8) went seven solid innings for his third straight win, giving up one run and six hits.
Joey Gathright got an RBI single in the second when shortstop Aaron Miles charged his high bouncer. The ball slipped out of Miles' hands and John Buck scored from third. The bases were loaded on three singles, and Gordon cleared them by slamming Pineiro's pitch into the right-field corner with two out.
Pineiro went 7 2-3 innings and was charged with all seven runs and 10 hits. The right-hander hasn't won in eight starts, with six no-decisions and two losses since beating Cincinnati on April 29.
Troy Glaus was 3-for-4 for the Cardinals with two RBIs. He homered leading off the seventh against Meche and hit an RBI single in the eighth off Ron Mahay.
The Royals loaded the bases in the first on second baseman Adam Kennedy's error, a walk and a hit batter. But Pineiro escaped by getting Mark Grudzielanek to bounce into a double play.
KC's only loss since starting their hot streak on June 14 was a 9-4 setback to San Francisco on June 20 when rookie starter Luke Hochevar failed to hold a 4-0 lead. Their surge has brought them to within six games of .500 at 37-43.