Turner was establishing his fastball early in the first inning, and logged two quick outs. But after getting ahead 1-2 in the count to Krauss, Turner was unable to put the Houston designated hitter away.
After working the count full, Krauss unloaded on a fastball down the middle and belted a solo home run to right.
"You're going to leave pitches up," Turner said. "I left one up, and he got me. You've got to tip your cap. I think the pitches before that, not putting him away when I was 1-2, 2-2. That led to that. You've got to look back at that as a whole."
Keuchel, meanwhile, set the tone for the Astros' pitchers. In two quick innings, the lefty threw just 17 pitches, with 14 for strikes.
"I came out of the gate, my fastball command was pretty good," Keuchel said. "That's something I'm trying to work on here in the early part of spring."
Jeff Baker slapped a single off Keuchel in the second, but Keuchel responded by getting Casey McGehee to tap into an inning-ending 6-4-3 double play.
The Astros tacked on two more runs in the seventh inning off Chaz Roe, who got into a jam by issuing a one-out walk to George Springer. J.D. Martinez blistered an RBI double to center field, and Marwin Gonzalez lined a run-scoring single to center.
The Marlins didn't have many chances, but when they did, they were shut down by Houston's pitching. Adeiny Hechavarria doubled with one out in the third inning, and Miami loaded the bases for Giancarlo Stanton, who lifted a fly ball to left.
Turner threw 40 pitches with 28 strikes.
Up next for the Astros: Southpaw Rudy Owens, who has already thrown an inning of relief this spring, will make his first start on Tuesday at 12:10 p.m. CT on MLB.TV. Owens takes the mound at Port St. Lucie, Fla., against the Mets, who are starting right-hander Zack Wheeler. Making the trip are Dexter Fowler, Springer and Jose Altuve.