Finding a crowd-pleasing dinner that works for dairy-free diets can feel like an impossible task. Between juggling everyone’s dietary needs and trying to keep meals interesting, the dinner struggle becomes even more real when traditional comfort foods are off the table.
That’s why this spaghetti and dairy-free meatballs recipe has become such a lifesaver in our house. It’s just as satisfying as the classic version, easy enough for busy weeknights, and best of all – no one will even miss the dairy.

Why You’ll Love This Spaghetti and Meatballs
- Dairy-free friendly – Perfect for those with dairy sensitivities or following a dairy-free diet, these meatballs are just as juicy and flavorful as traditional recipes without any cheese or milk.
- Rich homemade sauce – The sauce combines three types of tomatoes with fresh herbs and a secret ingredient – orange zest – creating a deep, complex flavor you just can’t get from a jar.
- Make-ahead friendly – Both the sauce and meatballs can be made in advance and actually taste even better the next day, making this perfect for meal prep or entertaining.
- Restaurant-quality result – Using quality ingredients like San Marzano tomatoes and fresh herbs gives you that authentic Italian restaurant taste right in your own kitchen.
What Kind of Ground Beef Should I Use?
For these meatballs, the recipe calls for an 85/15 beef blend, which is the sweet spot for flavor and texture. This ratio means 85% lean meat and 15% fat, giving you enough fat to keep the meatballs juicy without making them greasy. While you could use a leaner mix like 90/10, your meatballs might end up a bit dry. On the flip side, using something like 80/20 might make them too fatty and cause more shrinkage during cooking. If you’re buying from a butcher, ask them to grind chuck roast – it naturally has this ideal fat ratio and gives great beefy flavor. Just make sure your meat is fresh and well-chilled when you start mixing to help the meatballs hold their shape better.

Options for Substitutions
This dairy-free meatball recipe is pretty flexible – here’s what you can swap if needed:
- Ground beef and Italian sausage: You can use all beef if you prefer, or try a mix of ground pork and beef. For a lighter option, ground turkey works too – just add an extra tablespoon of olive oil to keep the meatballs moist.
- Almond flour: Out of almond flour? Try ground pork rinds, coconut flour (use 2 tablespoons instead of 1/4 cup), or gluten-free breadcrumbs if you’re not worried about grains.
- Fresh herbs: If you don’t have fresh oregano and thyme, use dried herbs instead – just cut the amount by half since dried herbs are more concentrated.
- San Marzano tomatoes: While San Marzano tomatoes give the best flavor, you can use any good quality canned tomatoes. If using regular tomatoes, add a pinch more sugar to balance the acidity.
- Orange peel and juice: No oranges? Use 1 tablespoon of lemon juice and skip the peel – it’ll still add that nice citrus kick to your sauce.
- Fresh basil: If fresh basil isn’t available, you can use 1 tablespoon of dried basil added during cooking, though fresh really makes a difference in this recipe.
Watch Out for These Mistakes While Cooking
The biggest mistake when making meatballs is overworking the meat mixture – mix just until the ingredients are combined, as excessive handling will result in dense, tough meatballs instead of light and tender ones. When forming your meatballs, avoid packing them too tightly; use a gentle touch and wet hands to prevent the mixture from sticking while shaping them into uniform sizes (about 2 inches each) for even cooking. A common error with the sauce is rushing the cooking time – let it simmer for at least 2-3 hours, stirring occasionally and keeping the heat low, as this allows the flavors to develop fully and the carrots to release their natural sweetness. For the best texture, don’t skip browning the meatballs before adding them to the sauce, and remember to taste and adjust the seasoning gradually throughout cooking since the flavors will concentrate as the sauce reduces.

What to Serve With Spaghetti and Meatballs?
When you’ve got a big pot of spaghetti and meatballs on the table, you’ll want some good sides to round out the meal. A simple green salad with mixed lettuce, cherry tomatoes, and a light Italian dressing makes the perfect fresh counterpoint to the rich pasta dish. For the bread lovers (and who isn’t?), some warm garlic bread or a crusty Italian loaf is perfect for soaking up all that tasty sauce. If you’re feeding a crowd, try adding some roasted vegetables like zucchini, bell peppers, and mushrooms on the side – they’re easy to prepare and add nice color to the plate.
Storage Instructions
Keep Fresh: Your spaghetti and meatballs will stay good in an airtight container in the fridge for up to 4 days. I like to store the sauce and meatballs together, but keep the pasta separate to prevent it from getting too soft. This way, you can just cook fresh pasta whenever you’re ready for leftovers!
Freeze: The sauce and meatballs are perfect for freezing! Let them cool completely, then pop them in freezer-safe containers or bags for up to 3 months. I often make a double batch just to freeze half – it’s such a time-saver for busy weeknights. Just skip freezing the pasta as it tends to get mushy.
Reheat: When you’re ready to enjoy your leftovers, warm the sauce and meatballs in a pot over medium-low heat, stirring occasionally. If it seems a bit thick, add a splash of water. For frozen portions, thaw overnight in the fridge first. Cook up some fresh pasta, and you’re good to go!
| Preparation Time | 15-20 minutes |
| Cooking Time | 60-75 minutes |
| Total Time | 75-95 minutes |
| Level of Difficulty | Medium |
Estimated Nutrition
Estimated nutrition for the whole recipe (without optional ingredients):
- Calories: 3500-4000
- Protein: 220-250 g
- Fat: 200-220 g
- Carbohydrates: 150-170 g
Ingredients
For the meatballs:
- 2 lb ground beef
- 2 tbsp Worcestershire sauce
- 1 tbsp fresh oregano (chopped)
- 2 tsp black pepper (freshly ground for best flavor)
- 1/4 cup almond flour
- 2 tsp salt
- 2 egg yolks (from large eggs)
- 2 tsp thyme leaves
- 19 oz ground Italian sausage
- 1/4 tsp ground nutmeg
- 1/2 sweet onion (finely diced)
- 2 tsp ground allspice
- 2 tsp garlic powder
- 2 tbsp olive oil (I use Colavita extra virgin)
For the sauce:
- 3 tbsp olive oil
- a handful fresh basil (chopped)
- 1 large carrot (grated, for sweetness)
- juice from 1/2 orange
- 1 sprig fresh thyme
- pepper to taste
- 1 to 2 tbsp sugar
- 2 (28 oz) cans crushed tomatoes
- 2 sprigs fresh oregano
- 2 tbsp tomato puree (I use Cento brand)
- 1 sweet onion (chopped)
- 1 tsp grated orange peel
- 1 (28 oz) can whole San Marzano tomatoes (crushed by hand)
- 5 garlic cloves (minced)
- salt to taste
Step 1: Prepare the Aromatic Base
In a pan over medium heat, add some olive oil and sweat the onions until they become soft and translucent.
Sprinkle in oregano, thyme, garlic powder, nutmeg, and allspice.
Season the mixture with salt and pepper, stirring well to distribute the spices evenly.
Step 2: Make the Meatball Mixture
Once the onions are fragrant and cooked, incorporate them into the meat.
Add any remaining ingredients required for the meatballs and mix until evenly combined.
Be cautious not to overwork the meat mixture, as this can result in a gummy texture.
Step 3: Shape and Bake the Meatballs
Preheat your oven to 375°F (190°C).
Lightly oil a baking sheet with olive oil to prevent sticking.
Roll the meat mixture into balls slightly larger than a golf ball, and place them on the baking sheet, ensuring they are evenly spaced.
Bake the meatballs for about 20 minutes until they are cooked through.
Step 4: Cook the Sauce Base
While the meatballs are baking, use another pan to sweat additional onions with thyme and oregano.
Add chopped garlic, tomato paste, orange zest, and orange juice to the pan.
Warm the mixture through, then incorporate crushed tomatoes, stewed tomatoes, diced carrot, sugar, salt, and pepper.
Allow the sauce to simmer for about 30 minutes, stirring often to avoid burning.
Step 5: Combine Meatballs and Sauce
After simmering the sauce, add the cooked meatballs into it.
Continue to simmer for an additional 10-15 minutes to let the flavors meld together.
Discard the sprigs of thyme and oregano herbs.
Optional: remove the carrot and either discard or slice it to serve as a side with pasta.
Stir in fresh basil and then remove the sauce from heat.
Step 6: Serve and Enjoy
Serve the flavorful meatballs and sauce over your favorite spaghetti noodles.
Alternatively, for those who prefer a gluten-free or grain-free option, serve it over a bed of spaghetti squash.
Enjoy your hearty and aromatic dish!