Kyle Leahy threw five innings of one-run ball with five strikeouts as the St. Louis Cardinals defeated the Miami Marlins 2-1.