we utilise WooCommerce Multi-Step Checkout,
Free Products option shows on cart and we select the free item, when going onto the billing step free item shows again.
Initially we hid the free products in css on the billing step of checkout but when doing this no free product is applied even though one was selected in the cart.
you can test via here and adding a sample pack to the cart
https://www.prodograw.com/product/sample-raw-dog-food-pack?apply_coupon=starterpack
i have kept the css to this for time being you can remove in F12 in chrome to see free products again
.wpmc-step-item.wpmc-step-billing.current .wjecf-fragment-checkout-select-free-product{display:none !important}