Latos benefitted from a 6-4-3 double play and a defensive assist from Ichiro Suzuki in left field in the second inning. Suzuki, making his first start this spring in left field, threw a perfect one-hopper to Jarrod Saltalamacchia to nail Mark Reynolds, who was trying to score from second on a single by Stephen Piscotty.
Latos left the game after the third inning, having given up two hits with two walks and two strikeouts. He threw 39 pitches, 22 of them for strikes.
"I'm happy with the results," Latos said. "I made pitches when I needed to, got a couple groundball double plays when I needed them most. I don't know how hard I was throwing, but I'm not worried about it. I felt good. Everything feels good."
Cardinals starter Zach Petrick, meanwhile, did not fare so well. Petrick, who was the 2013 Minor League pitcher of the year, allowed five hits and issued two walks in the first two innings when the Marlins grabbed a 4-0 lead.
The big blow against Petrick, who replaced Lance Lynn (hip flexor strain) as Friday's starter, was a bases-loaded triple by Marlins shortstop Reid Brignac in the bottom of the second. Michael Morse started the scoring with a first-inning RBI single for Miami.
"He's a guy who is usually around the plate, but he worked behind a lot today and it ended up getting him," Cardinals manager Mike Matheny said. "Just one of those days that he wasn't as sharp as he's been."
Carlos Villanueva followed Petrick with two perfect innings of relief for St. Louis.
Up Next: The Marlins travel north up I-95 to Viera to face the Nationals on Saturday, with right-hander David Phelps taking the mound for the Marlins at 1:05 p.m. ET. Lefty Gio Gonzalez (0-0, 0.00) is scheduled to start for the Nationals.
Steve Dorsey is a contributor to MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.