Their performances made it tough to tell they weren't 100 percent.
Lohse (4-1) allowed four hits and pitched seven scoreless innings in his first start since throwing a two-hit shutout in his last outing, a 5-0 win over the Washington Nationals.
Holliday drove in two runs and his solo shot to the Crawford Boxes in left field put St. Louis up 1-0 in the fourth inning.
Lohse, Holliday and Albert Pujols were all fighting through colds that had them feeling bad.
"It is one of those head colds where the adrenaline kicks in and you feel good enough," Lohse said. "I think now is when I'm starting to feel it a little more, when you kind of let down ... glad to get it together enough to go out there and put a pretty decent performance together."
Holliday, who is hitting .429, said Wednesday was a bit tough.
"I don't feel great," he said. "It's not fun to play when you're sick, but I'm all right."
In at shortstop with Ryan Theriot out with rib cage soreness, Tyler Greene hit his first home run of the season with his one-out shot to left field that made it 2-0 in the fifth. The Cardinals extended their lead with a four-run seventh.
Houston starter J.A. Happ (1-4) allowed five hits and two runs in five innings for the loss.
Cardinals manager Tony La Russa liked what he saw from the 22-year-old Sanchez.
"He made a great pitch to get Pence out," he said. "He could have hung that pitch. When you're working to get the bullpen straight, it's nice to give guys some room for a mistake here or there."
Houston manager Brad Mills was happy to see his team get back in it late.
"They know that it can happen," he said. "We have seen that more than once, especially in the last two weeks. It was an outstanding effort all the way around."
The Cardinals got 14 hits, but Houston turned a season-high five double plays to limit their scoring. It is the most double plays the Astros have had in a single game since turning six in May 2003 against the Philadelphia Phillies.
"The more play together, the more comfortable you get," Houston's Brett Wallace said. "I think as the season wears on, you get in a rhythm defensively just like you do offensively. Everybody is pitching in and making plays and things are really starting to click."
Punto stole second base before reliever Enerio Del Rosario hit David Freese with a pitch and was replaced by Jose Valdez. Valdez allowed consecutive run-scoring singles to Pujols, Holliday and Berkman to make it 6-0. Houston finally got out of that inning when Yadier Molina grounded into a force out.
The Astros didn't score until Sanchez grounded into a force and Joe Inglett, who got on with a double, scored to make it 6-1 in the eighth inning. Pence singled in a run before Carlos Lee fell to 0-for-15 with a strikeout.
Wallace singled with one out in the fourth inning before Lohse retired the next eight batters. He didn't allow another hit until Wallace doubled with one out in the seventh inning. Chris Johnson hit a long fly to the corner of right field after that, but Berkman made a nifty catch to rob him of a hit and Lohse retired J.R. Towles to end the inning.
Del Rosario allowed a pair of singles with one out in the sixth inning, but Houston turned its third double play of the game to help him escape that jam. The Astros had a fourth double play in the eighth inning and the fifth came in the ninth.
Towles singled in the third inning before Happ walked, but Lohse retired Bourn and Sanchez to end the inning.
The Cardinals got singles in the first and third innings, but Houston turned double plays both times to get out of the innings. Lohse also got some help from his defense when the Cardinals used a double play to end the first inning.
Theriot is listed as day to day with his injury. ... Wednesday was the anniversary of Nolan Ryan breaking Walter Johnson's major league record for career strikeouts by retiring Mills, then an Expo, for his 3,509th strikeout. Ryan set the record in 1983 in a 4-2 Houston win over Montreal.