Kansas City shortstop Alcides Escobar is on a tear.

Escobar continued his torrid pace Saturday with two hits, but it wasn't enough for the Royals in a 5-4 loss at St. Louis.

Known for his defensive skills, Escobar has 16 hits in his last 29 at-bats. Escobar has seven multi-hit games in eight contests during the current road trip that ends Sunday.

"He's pushed his average up at least 50 points since we left Kansas City," Royals manager Ned Yost said. "He's swinging the bat real well and making spectacular plays defensively."

Escobar says the key to his recent success is patience.

"I feel like I'm more comfortable around home plate right now," he said. "I'm trying to hit the ball to the other side and that's what's working."

Escobar tripled in a pair of runs in the second to give the Royals a 2-1 lead. He singled and stole a base in the fourth.

St. Louis outfielder Matt Holliday hit a go-ahead two-run homer in the eighth inning that helped the Cardinals snap a season-high seven-game skid with the victory.

Holliday and three others starters — Ryan Theriot, Skip Schumaker and Yadier Molina — wore their socks up near the knees in an effort to shake the bad luck. Holliday even changed uniform pants, wearing a tighter pair belonging to special assistant Red Schoendienst, a Hall of Famer.

Now, Holliday is ready to move forward with the new look.

"You can't change after a win," he said.

Holliday drilled an 0-1 pitch from reliever Greg Holland to erase a 4-3 deficit. Holliday is 5 for 9 with two homers and four RBIs since coming back from a quadriceps injury June 16.

"I thought timing might be an issue," he said. "But I saw the ball pretty well."

Holliday homered in his first at-bat in his return to the lineup Thursday. The home run Saturday, his eighth of the season, went 422 feet to dead center.

"It was huge," St. Louis manager Tony La Russa said. "As big a hit as we've had all year."

Kansas City, which won the first game of the series, has lost three of four.

Jason Motte (3-1) earned the win in relief. Closer Fernando Salas converted his 12th save in 13 chances.

Holland (1-1) gave up his first home run of the season.

"He was lights out except for one pitch," said Yost. "He threw it right down the middle."

The Cardinals were outscored 47-20 during the losing streak.

"You just keep battling and realize that it's a long season and every team goes through something like this," Holliday said.

Alex Gordon gave Kansas City a 4-3 lead with a solo homer in the seventh off St. Louis starter Jake Westbook, who gave up four runs in seven innings.

"I still felt strong," said Westbrook. "Matty picked us up with a big homer."

St. Louis took a 3-2 lead in the third on a run-scoring double by Albert Pujols, who has 52 RBIs against Kansas City.

Matt Treanor then tied the game 3-all with a solo homer in the fourth, his third of the season.

Kansas City starter Vin Mazzaro allowed seven hits and three runs over six innings.

Melky Cabrera robbed Lance Berkman of a home run with a leaping catch over the wall in the sixth inning.

The Cardinals improved to 5-23 when trailing after seven innings.

"We let one slip away," said Yost.

NOTES: Westbrook batted in the No. 8 spot in the order, the third time this season that manager Tony La Russa has hit the pitcher eighth. St. Louis pitchers hit eighth 77 times last season. ... Westbrook reached a three-ball count on nine of the first 20 hitters. ... St. Louis OF Colby Rasmus broke out of an 0-for-14 skid with a single in the eighth to start the winning rally. ... The teams wore Joplin High baseball caps during batting practice in tribute to the southwest Missouri school, which was destroyed by a tornado on May 22. The clubs are wearing, "Teams Unite For Joplin," patches on their uniforms during the three-game series. ... Miss Missouri, Sydney Friar, threw out the first pitch.