This Post May Contain Affiliate Links. Please Read Our Disclosure Policy.
This is the best Italian meatball recipe that’s seriously life-changing! Tender, veggie-packed meatballs get smothered in a rich, creamy tomato sauce that’s SOO good you’ll want to drink it straight from the pan (no judgment). It’s paleo, Whole30 compliant, low-carb, and dairy-free, making it ideal for meal prep or weeknight dinners when you need something satisfying that doesn’t derail your healthy eating goals.

See recipe card below for full list of measurements, ingredients, and instructions.
Why This Recipe is So Good
- This Italian meatball recipe is a sneaky veggie delivery vehicle — shredded zucchini and chopped spinach keep them incredibly tender while boosting your daily veggie intake. The kiddos won’t even notice the greens hiding in there, and you’ll feel like a genius for getting extra nutrients into dinner without any drama.
- The coconut cream cuts through the tomato’s natural acidity and creates this silky, luxurious sauce that coats every meatball perfectly. Seriously, you’ll want to spoon it over everything! It tastes indulgent and rich but stays completely dairy-free and Whole30 friendly.
- These Italian meatballs keep beautifully in the fridge for up to 4 days and freeze like a dream for up to 3 months. Make a double batch on Sunday, and you’ve got protein-packed lunches and dinners ready to go all week. Just reheat and serve over zoodles, cauliflower rice, or eat them straight from the container (we won’t tell).
- Using a disher (cookie scoop) means every meatball is perfectly portioned and cooks evenly. No more giant meatballs that are raw in the center or tiny ones that turn into hockey pucks.
What You Need to Know Before You Start
- After you shred the zucchini, place it in a clean kitchen towel or several layers of paper towels and squeeze out as much liquid as possible. This prevents soggy meatballs and ensures they hold together beautifully when frying. If you’re short on time and the zucchini seems dry enough, you can skip this step, but wringing out excess moisture really does make a difference!
- When using your food processor, shred the zucchini using the shredding blade attachment, then swap to the regular blade to pulse-chop the spinach. If you don’t have a food processor, a box grater works great for the zucchini — just chop the spinach as finely as you can so it distributes evenly throughout the meat.
- The recipe calls for 1 cup of coconut cream (just the thick white part from canned coconut milk or cream), but you can adjust based on your preference. If you want an even richer, creamier sauce, add the full can of coconut cream, or if you prefer a lighter tomato sauce, just cut back to ½ cup. You can also reduce the entire sauce amount by using 1 can of crushed tomatoes and ½ cup coconut cream if you’re not big on extra sauce.
Recipe Variations
Make it with All Ground Beef: Swap out the ground pork and chicken for 2 pounds of ground beef. Choose a beef that’s not too lean (80/20 works great) so the meatballs stay tender and juicy. The flavor will be richer and more traditional Italian-style.
Try Different Greens: Don’t have spinach? Use finely chopped kale, Swiss chard, or even arugula. Just make sure to chop whatever greens you use pretty fine so they blend seamlessly into the meat mixture and don’t create tough spots.
Add Heat with Red Pepper Flakes: Stir ½ to 1 teaspoon of red pepper flakes into the tomato sauce for a spicy kick that complements the creamy coconut beautifully. Start with less and taste as you go — you can always add more heat but you can’t take it away!
Boost the Veggies Even More: Add 1 cup of finely diced mushrooms or ½ cup grated carrots to the meatball mixture along with the zucchini and spinach. This makes the meatballs even more tender while sneaking in extra nutrients without adding significant carbs.
Switch Up the Herbs: Add 2 tablespoons of fresh chopped basil or 1 tablespoon of fresh oregano to the meatball mixture for an extra flavor punch. Fresh herbs bring brightness that dried herbs can’t quite match, and they’re totally workable for all three diets.


Frequently Asked Questions
Absolutely! Arrange the meatballs on a parchment-lined baking sheet and bake at 400°F for 18-22 minutes, flipping halfway through. They won’t get quite as brown as pan-fried meatballs, but they’ll still be delicious and this method is way less hands-on. You can also air fry them at 400°F for 12 minutes, flipping halfway through.
The safest way is to use an instant-read thermometer — the internal temperature should reach 165°F. When you scan, the meatballs should be browned on the outside and no longer pink in the center when you cut one open. If you’re unsure, it’s always better to cook them a bit longer than to undercook ground meat.
Totally; you can form the raw meatballs up to 24 hours ahead and store them covered in the refrigerator until you’re ready to cook. You can also fully cook the meatballs and sauce, let everything cool completely, and refrigerate for up to 4 days. Reheat gently on the stovetop with a splash of water or broth if needed.
Zucchini noodles (zoodles) are the classic paleo option and soak up that creamy sauce perfectly. You can also serve them over cauliflower rice, spaghetti squash, or even roasted vegetables. For a heartier meal, try them with compliant mashed cauliflower or sweet potato.
If you’re not following a dairy-free or Whole30 diet, you can substitute heavy cream or half-and-half for the coconut cream. The flavor will be a little different (no subtle coconut undertone), but it’ll still be delicious. Use the same amount as the recipe calls for.
More Tasty Paleo Recipes
- Whole30 Marry Me Chicken
- Best Roast Chicken With Homeade Gravy
- 40+ of Our Favorite Paleo Recipes
- Whole30 Marry Me Chicken
- Breakfast Bake with Sweet Potatoes and Apples
- Swedish Meatballs with Gravy
- Easy Salisbury Steak with Mushroom Gravy (Whole30, Paleo, Low Carb)
- Paleo Carbonara with Palmini
- Whole30 Fish Taco Bowl with Mango Salsa and Chipotle Aioli
- Paleo Meatloaf
- Beef Consommé
- How to Make Harissa Paste (Vegan, Whole30, Paleo)

Paleo Homemade Italian Meatballs (Whole30, Low Carb)
Ingredients
Italian Paleo Meatballs
- 1 pound ground pork
- 1 pound ground chicken or more ground pork
- 2 cups shredded zucchini
- 2 cups chopped fresh spinach
- 2 cloves garlic minced
- 1 ½ teaspoons Italian seasoning
- 1 teaspoon salt
- refined coconut oil or avocado oil for frying
Creamy Tomato Sauce
- 2 teaspoons avocado or refined coconut oil
- 4 cloves garlic
- 2 14-ounce cans crushed tomatoes
- 1 cup coconut cream just the solid white part from 1-2 cans of coconut cream or milk
- 2 teaspoons Italian seasoning
- 1 – 1 ½ teaspoons salt
- fresh chopped parsley for garnish
Instructions
- Combine all meatball ingredients in a large mixing bowl and mix until combined well, using your hands. Do not overmix.

- Use a disher and portion out meatball mixture into even balls; repeat until all meatball mixture is used.

- Heat a layer of refined coconut or avocado oil in a large skillet over medium heat. Fry meatballs in batches until brown on all sides and cooked through. Transfer to a plate.

- Pour out oil if excess remains. Add 2 teaspoons avocado or refined coconut oil to skillet over medium-low heat. Add garlic and, stirring constantly, cook until fragrant, about 30 seconds.

- Add remaining sauce ingredients and stir to combine well. Bring to a low boil then reduce heat slightly and simmer for about 5-10 minutes or until a bit thickened.

- Return meatballs to skillet and simmer 3-5 minutes to absorb sauce. Serve over zoodles or alone and top with fresh chopped parsley.

Video
Approximate Information for One Serving
Nutrition Disclaimers
Number of total servings shown is approximate. Actual number of servings will depend on your preferred portion sizes.
Nutritional values shown are general guidelines and reflect information for 1 serving using the ingredients listed, not including any optional ingredients. Actual macros may vary slightly depending on specific brands and types of ingredients used.
To determine the weight of one serving, prepare the recipe as instructed. Weigh the finished recipe, then divide the weight of the finished recipe (not including the weight of the container the food is in) by the desired number of servings. Result will be the weight of one serving.
Did You Make This Recipe?
Tag @40aprons on Instagram and be sure to leave a review on the blog post!
Never Miss A Meal!
New Recipes Straight To Your Inbox
A curated selection of our most recent recipes, delivered straight to your inbox once a week.











These are amazing! Hands down, my favorite meatballs ever!
That’s awesome, I’m so happy you loved it!
If I don’t have a zucchini, do you think I could use more spinach in place of it?
Sure!
Hi! I love these and your other recipes! I am planning meal prep for when my baby arrives and want to add this to my freezer. Do you recommend freezing after they have been cooked or before? Thank you!
I would do after! Congrats on your impending bundle 🙂
This recipe is amazing! The hubs and I were both so delighted by it the beautiful flavors of the sauce and meatballs. I did find my meatball mix seemed too loose so I added 1 egg to the mix. After I portioned them out I put them in the freezer while I got my sauce ingredients ready. These 2 things did the trick and the meatballs were amazing! For the sauce we added 1 cup of shredded zucchini and about 3 big handfuls of spinach after the meatballs were warmed through. We used these in place of noodles and it was perfect!
Sounds great!!
Did I do something wrong? My meatballs came out very green and crumbly. I used the portions outlined in the recipe but they fell apart. Was I supposed to squeeze out the zucchini after shredding it? Did I put too much of something in?
Hmmm that’s very strange, we’ve never had anything like that happen before! Did you use a different type of ground meat? Did you chop things in the food processor, did you bake them instead of pan frying them? Just trying to troubleshoot this for you!
Do you do anything else with the zucchini before/after shredding (ie deseeding before or straining excess water after?)
We don’t! Easy enough, right?
This was so good!! I had issues with some of the meatballs wanting to break down so I went ahead and baked them off to make sure they were cooked through and I think I’ll do that next time, they cooked so good in the oven. I made up some spaghetti squash and green beans to go with this and my 3.5yo loved it! Saving this recipe for later.
Cooked this today!! And my partner and I loved it a lot!!! I was hoping to have some leftover for lunch tomorrow, but it was sooo good we finished them all! Thank you Cheryl for this recipe!!
I love love love this recipe. I could drink the sauce. I use all ground turkey and serve it over gluten free noodles. So delicious! My 4 and 1 yr old and hubby approve too!
About how many meatballs total do you get out of this recipe?
About 30. 🙂 Depends on the type of disher you use for the meat!