Boulette Soup Recipe: French-Style Meatballs in Savory Tomato Broth

Soups & Stews

Boulette Soup Recipe: French-Style Meatballs in Savory Tomato Broth

This boulette soup recipe brings hearty French comfort to your kitchen with tender meatballs simmered in rich tomato broth—perfect for chilly evenings. The key lies in the meatballs: finely ground beef or pork mixed with breadcrumbs, egg, and herbs, shaped into classic French boulettes that stay moist and flavorful.

This isn’t your average meatball soup; it’s a rustic, savory dish that balances deep tomato notes with aromatic herbs and a touch of garlic.

The broth is where the magic happens—a slow-simmered blend of beef or chicken stock, crushed tomatoes, and a bouquet garni of thyme, bay leaf, and parsley. Unlike lighter soups, this one is substantial, designed to warm you from the inside out.

The meatballs cook gently in the broth, absorbing its flavors while maintaining their structure, ensuring each bite is both tender and satisfying. It’s the kind of soup that tastes even better the next day, as the flavors meld and deepen.

Serve it with crusty baguette slices for dipping or alongside a simple green salad to balance the richness. For extra heartiness, add a sprinkle of grated Parmesan or a dollop of crème fraîche before serving.

This recipe delivers restaurant-quality results at home, with minimal effort but maximum flavor—ideal for feeding a family or impressing guests without hours in the kitchen.

Adapt it easily: swap beef for chicken or turkey, use vegetable stock for a lighter version, or add a splash of red wine to the broth for depth. The beauty of boulette soup lies in its versatility—simple enough for weeknight dinners but elegant enough for special occasions. Let’s get cooking!

👨‍🍳
Difficulty
Medium
🥩
Diet
Meat
🔥
Calories
Med Cal

Ingredients for boulette soup

French-style meatballs meet rich tomato broth—here's what brings this cozy soup to life.

Ingredient Amount Notes
Ground Beef 🥩 1 ½ lb 80% lean, finely ground
Ground Pork 🐷 ½ lb Finely ground for tenderness
All-Purpose Flour 🌾 ½ cup For binding meatballs
Large Eggs 🥚 2 whole Room temperature preferred
Fresh Breadcrumbs 🍞 ½ cup Panko works too
Fresh Parsley 🌿 ¼ cup Finely chopped, stems removed
Garlic Cloves 🧄 4 cloves Minced for flavor
Dried Thyme 🌿 1 tsp Or 1 tbsp fresh thyme
Crushed Tomatoes 🍅 14 oz High-quality canned preferred
Beef Stock 💧 4 cups Homemade or quality store-bought
Bay Leaves 🌿 2 whole For aromatic depth
Olive Oil 🫒 2 tbsp Extra-virgin for richness
Salt 🧂 1 ½ tsp Kosher or sea salt
Black Pepper 🌶️ ½ tsp Freshly ground preferred
Parmesan Cheese 🧀 ¼ cup Freshly grated for serving

The meatballs are the heart of this soup, so don't skimp on quality. Ground beef and pork from the butcher section (not pre-packaged) gives the best texture—look for 80% lean for juiciness. Fresh breadcrumbs make a difference too; Trader Joe's or Whole Foods have great options, or toast your own from a crusty baguette. The crushed tomatoes should be San Marzano if you can find them—their sweetness shines through. For the stock, Kitchen Basics or Pacific Foods brands are reliable, but homemade is always better if you've got the time.

No pork? Extra chicken or turkey works in a pinch, but the fat content matters for texture. Short on fresh parsley? Dried works at one-third the amount, but it won't be as vibrant. The crushed tomatoes can be swapped for whole canned tomatoes crushed by hand—you'll taste the difference. For extra depth, add 1 tbsp tomato paste to the broth. The Parmesan is just for serving, but if you want to add it to the soup, use Parmigiano-Reggiano and stir in at the end so it doesn't curdle.

This soup tastes even better the next day—make extra and freeze portions for 3 months. Store the meatball mixture separately from the broth if prepping ahead. The meatballs can be shaped and frozen on a tray before cooking, then transferred to the broth later. For serving, keep the broth warm on low heat and add the meatballs just before plating. The Parmesan stays fresh for weeks in the fridge if you keep it in a sealed container.

❤️

Why You'll Love This Recipe

  • No-Fuss Mixing: I swear by the 10-minute prep—just toss the ground beef, pork, flour, egg, and breadcrumbs in a bowl. No fancy techniques, no measuring cups stressing me out. The dough comes together smoother than my attempts at kneading pizza crust.
  • Meaty Magic: That combo of beef and pork? Rich, hearty, and impossible to resist. The breadcrumbs add a satisfying crunch, while the egg binds it all into tender, melt-in-your-mouth boulettes. Honestly, it’s the kind of flavor that makes you pause mid-lunch.
  • Soup Star Any Day: Turns out these boulettes work in any broth—tomato, veggie, even a quick chicken base. I’ve served it as a cozy weeknight dinner, packed it for lunch the next day, and even used it to stretch a budget-friendly pot of soup into a full meal.
  • Leftovers That Don’t Suck: Between us, most soups turn sad after day two. Not this one. The boulettes reheat like a dream, and the broth only gets better as flavors meld. Plus, they’re cheap to make—ground meat stretches far, and I’ve fed a crowd for under $15. (Yes, even on a Tuesday night.)

Step-by-step instructions for French-style meatball soup

Here's how to make hearty boulette soup with tender meatballs and rich tomato broth.

1

Prepare the Meatball Mixture

In a large bowl, combine the 1.5 lb ground beef and 0.5 lb ground pork. This mix gives you the perfect balance of flavor and tenderness. Add the 0.5 cup all-purpose flour, 2 whole large eggs, 0.5 cup fresh breadcrumbs, 0.25 cup finely chopped fresh parsley, 4 minced garlic cloves, 1 tsp dried thyme, 1.5 tsp salt, and 0.5 tsp black pepper. I like to use my hands for this part—it helps distribute the ingredients evenly and keeps the meatballs from getting tough.

Mix everything together until just combined. You don't want to overwork the meat or the meatballs will turn out dense. The mixture should hold together when you press it gently, but still feel slightly crumbly. If it feels too sticky, add a little more breadcrumbs. Let the mixture rest for 10 minutes while you prepare the soup base—this helps the flavors meld and makes the meatballs easier to shape.

2

Build the Tomato-Broth Base

Heat the 2 tbsp olive oil in a large Dutch oven or heavy pot over medium heat. Add the 14 oz crushed tomatoes and let them cook for 5-7 minutes until they begin to thicken slightly. This step develops the tomato flavor and removes some of the acidity. Stir occasionally so nothing sticks to the bottom.

Add the 4 cups beef stock and 2 whole bay leaves to the pot. Bring the mixture to a gentle simmer, then reduce the heat to low and let it cook uncovered for 15 minutes. This allows the flavors to meld and the broth to deepen in richness. You'll know it's ready when you can smell that comforting, savory aroma filling your kitchen.

3

Shape and Cook the Meatballs

While the broth simmers, roll the meat mixture into 1.5-inch meatballs—about the size of a golf ball. I like to use my hands, but if you prefer, you can use a small cookie scoop for even-sized meatballs. Gently drop them into the simmering broth, being careful not to overcrowd the pot. You want enough space for the meatballs to cook evenly without steaming.

Let the meatballs simmer for 15 minutes, then carefully turn them over with a slotted spoon. This ensures they cook evenly on all sides. The meatballs should float to the surface as they cook—this is a good sign they're getting tender. Continue cooking for another 15-20 minutes, until the meatballs are cooked through and the internal temperature reaches 160°F. You'll know they're done when they're firm to the touch and no longer pink in the center.

4

Finish and Serve

Once the meatballs are cooked, remove them from the broth with a slotted spoon and set them aside on a plate. Skim any excess fat from the surface of the broth if desired—this helps create a cleaner, richer soup. Return the broth to a gentle simmer and let it cook for another 5-10 minutes to thicken slightly and intensify the flavors.

To serve, ladle the hot broth into bowls, then place 3-4 meatballs in each bowl. Top each serving with 1 tablespoon freshly grated parmesan cheese and a sprinkle of fresh parsley. The parmesan adds a nice salty contrast to the rich tomato broth, while the parsley brightens up the dish. Serve immediately with crusty bread to soak up every last drop of that delicious broth.

👨‍🍳

Pro Tips For Making Boulette Soup

  • CHILL THE MEAT MIX: Mix your ground beef and pork with ice cubes or cold water until it’s barely warm to the touch—this keeps the boulettes from turning greasy when frying. I used to skip this and ended up with soggy, oil-logged meatballs every time.
  • USE DRY BREADCRUMBS: Pat your fresh breadcrumbs with a paper towel first to remove excess moisture—wet crumbs make the boulettes dense and gummy. My grandmother swore by this, and she was right: the texture stays light and crispy, even when simmered in soup.
  • DON’T OVERMIX THE DOUGH: Once you add flour, egg, and breadcrumbs, stop stirring after 2-3 turns—overworking makes the meat tough. I learned this the hard way after making a batch that tasted like chewy rubber.
  • FREEZE BOULETTES BEFORE FRYING: Pop your shaped boulettes on a tray and freeze them solid for 30 minutes before frying—this prevents cracking and ensures an even golden crust. Sounds weird, but it works: no more lopsided, broken meatballs in your soup.

Creative variations of this recipe

Italian-Inspired Twist

Swap the tomato base for a white wine and herb broth to create an Italian-style boulette soup. Sauté 2 diced carrots, 1 diced celery stalk, and 1 diced onion in 2 tbsp olive oil until soft, then deglaze with ½ cup dry white wine.

Add 4 cups chicken stock, 2 sprigs rosemary, and 1 sprig thyme, simmering for 20 minutes. Shape the meatballs as directed, using ½ cup grated Pecorino Romano instead of Parmesan for serving. The wine adds brightness that cuts through the richness of the meatballs beautifully. 🍷

Vegetarian Option

Transform this into a vegetarian boulette soup by replacing the meat with 1 lb mushrooms (cremini or portobello) finely chopped and sautéed until dry.

Add ½ cup cooked lentils, ½ cup breadcrumbs, 1 flax egg (1 tbsp ground flaxseed + 3 tbsp water), and 1 tbsp soy sauce to bind the mixture. Use vegetable stock and top with nutritional yeast instead of Parmesan.

The mushrooms add a meaty texture that holds up perfectly in the broth. 🌱

Spicy Cajun Version

For a Cajun-inspired kick, add 1 tbsp Cajun seasoning (like Tony Chachere’s) to the meatball mixture and 1 tbsp hot sauce (like Crystal or Tabasco) to the broth. Stir in ½ cup diced bell peppers and ½ cup diced onions when building the broth base.

Serve with a side of cornbread and a dollop of sour cream to balance the heat. The smoky, spicy flavors turn this into a cozy yet bold dish perfect for cooler evenings. 🌶️

Creamy Mushroom Addition

Elevate the classic recipe with a creamy mushroom twist. After cooking the meatballs, stir in 1 cup sliced mushrooms sautéed in 1 tbsp butter and 1 tbsp flour to make a quick roux. Add ½ cup heavy cream to the broth and simmer for 5 minutes until slightly thickened.

Garnish with fresh thyme and a sprinkle of Parmesan. The cream adds luxurious depth without overpowering the tomato broth. 🍄

Herb-Infused Broth

Create a herb-forward broth by adding 1 tbsp fresh sage, 1 tbsp fresh marjoram, and 1 sprig fresh tarragon to the simmering broth. Remove the herbs before serving to avoid bitterness. The tarragon adds a subtle anise note that pairs wonderfully with the tomato and meatball flavors.

For extra aroma, lightly toast the herbs in a dry pan before adding them to the broth. ✨

Make-Ahead Freezer Hack

Prep this soup ahead of time for easy weeknight meals. Shape the meatballs and freeze them on a tray before transferring to a freezer bag. Store the broth separately in another bag.

When ready to serve, thaw the meatballs in the fridge overnight, then simmer them directly in the broth for 20-25 minutes until heated through. The flavors deepen even more after reheating, making it ideal for busy days. ❄️

Nutrition facts

Servings 6
Amount Per Serving
Calories 480kcal
% Daily Value *
Total Fat 28g36%
Saturated Fat 12g60%
Cholesterol 145mg48%
Sodium 1200mg52%
Total Carbohydrate 22g8%
Dietary Fiber 3g11%
Sugars 6g
Protein 38g76%
* Percent Daily Values are based on a 2,000 calorie diet. Your daily values may be higher or lower depending on your calorie needs.

Frequently asked questions

1

What’s the best way to keep meatballs tender in boulette soup?

Don’t overwork the meat mixture—just combine ingredients until barely combined. Use fresh breadcrumbs (not dried) and let the mixture rest for 10 minutes before shaping. Simmer gently (medium-low heat) so they cook through without drying out. Pro tip: Add a splash of broth to the meatballs when shaping to help them stay moist!

2

Can I make boulette soup ahead of time?

This soup tastes even better the next day. Cook the meatballs and broth separately, then refrigerate for up to 3 days or freeze for 3 months. Reheat gently on the stove, adding a splash of water or stock if it thickens too much. The flavors deepen overnight—perfect for meal prep!

3

What if my meatballs fall apart when cooking?

Overmixing or too much moisture (like wet breadcrumbs) causes this. Use fresh breadcrumbs and avoid adding extra liquid to the mixture. If it’s too sticky, add 1-2 tbsp more breadcrumbs. Also, don’t overcrowd the pot—cook meatballs in batches if needed to maintain even heat.

4

How do I make this soup lighter or vegetarian?

For a lighter version, use chicken or turkey instead of beef/pork and reduce the broth fat by skimming it. For vegetarian, swap meat for mushrooms + lentils (see recipe variations) and use vegetable stock. The broth stays rich but hearty without meat.

5

What’s the secret to a flavorful broth?

Simmer the broth uncovered for 15+ minutes to let flavors meld. Use high-quality stock (homemade if possible) and add bay leaves, thyme, and garlic early. For extra depth, deglaze the pot with 1 tbsp red wine before adding stock. The longer it simmers, the richer it tastes!

★★★★★5.0(9 reviews)
Categories Soups & Stews