This is a one-pot pork meatball soup with cannellini beans, kale, and a chicken-tomato broth. It makes a full meal — protein, greens, and something starchy if you add bread — without a lot of cleanup. It scales up easily, which makes it a reliable option when you need to feed several people at once.
Substitutions that actually work
- Ground pork: Ground chicken or turkey works, but cook meatballs to 165°F (74°C) internal temperature — not 160°F. They’ll be slightly leaner and can dry out faster, so don’t overbrown them.
- Lacinato (Tuscan) kale: Curly kale, Swiss chard, or baby spinach all work. Spinach wilts in under a minute, so add it at the very end. Curly kale needs the same time as Lacinato.
- Cannellini beans: Great Northern beans are nearly identical here. Navy beans work too but go softer faster — add them a few minutes later than the recipe calls for.
- Chicken stock: Vegetable stock is a clean swap. Beef stock will darken the broth and overpower the meatballs — skip it.
The short version of why this works
Two things matter most. First, browning the meatballs before they go into the broth — that surface color adds flavor to the soup itself once the meatballs simmer and release their fat. Second, the order of the aromatics: onion, carrot, and red pepper go in before the garlic and tomatoes, giving them enough time to soften and sweeten rather than just tasting raw. Skip either step and the broth stays flat. Everything else in this recipe is flexible.
What can go wrong
- Meatballs falling apart in the pot: They need to set a crust during browning before liquid touches them. If they’re sticking to the pan and tearing, they’re not ready to flip — give them another 30–60 seconds.
- Broth too thin at the end: The beans thicken the soup as it simmers, but if yours are very firm (older canned beans can be), mash a small scoop against the side of the pot and stir it back in — instant body, no extra ingredients.
- Kale turning army-green and bitter: It’s been in too long. Add kale in the last 8–10 minutes only. It should be tender but still have some color. Skip the garnish of extra raw kale on top — not worth the extra dish.
- Soup tastes flat despite all the herbs: Check salt before serving. Canned tomatoes and store-bought stock vary a lot in sodium. A small pinch of salt at the end often pulls the whole thing together.
- Meatballs dense and rubbery: Overmixing the pork mixture is usually the cause. Mix just until the ingredients are combined — stop as soon as you don’t see dry patches.

Warm Meatball, White Bean and Kale Tuscan Soup
Ingredients
Meatball Ingredients
500 grams ground pork
1 cup breadcrumbs
2 cloves garlic
2 sprigs spring onions - finely chopped
1 cup mixed herbs (usually Thyme, Marjoram, Oregano, Parsley, Sage, Basil)
1 medium egg
½ cup Parmesan cheese - grated
1 pinch chili flakes (chilli flakes in British English)
½ teaspoon salt
½ teaspoon ground black pepper
Soup Ingredients
2 medium yellow onion - diced
2 medium carrots - chopped
1 medium red pepper (red capsicum) - diced
1 cup kale - chopped
2 cloves garlic - sliced
2 cups chicken stock (chicken broth or chicken bouillon)
1 can tomato - chopped
1 can water
½ teaspoon salt
½ teaspoon ground black pepper
Instructions
Meatball Instructions
- In a bowl, put all ingredients for the meatballs and mix well.
- Form into teaspoon-sized balls, roll in your hands and set aside.
- Heat some oil in a dutch oven and brown the meatballs on all sides until sealed. It’s good to do two batches, so the pan isn’t overcrowded.
- Place the meatballs on a plate until later. Take a paper towel and take out most of the grease from the pot.
Soup Instructions
- In the dutch oven, add some more olive oil and brown the onions, carrot and celery until softened and sweet, about 10 to 15 minutes on low. Add the garlic and continue to cook for a couple more minutes.
- Add the pepper, kale, tomatoes and water, salt and pepper and bring back to boil.
- Turn the heat to a simmer and add the meatballs. Cover and let cook for 45 minutes, stirring occasionally.
- Serve with crusty bread and grated parmesan on top.
Nutrition
Common questions
Can I make the meatballs ahead of time?
Yes — roll and brown them up to two days ahead, then refrigerate. Add them directly to the simmering broth from cold; just give them an extra 3–4 minutes to heat through to 160°F (74°C) before serving.
How do I know the pork meatballs are fully cooked?
The safest check is a meat thermometer reading 160°F (71°C) at the center. If you don’t have one, cut the largest meatball in half — the inside should be completely gray with no pink remaining.
Will this soup keep and reheat well for leftovers?
It keeps well in the fridge for up to 4 days and actually tastes better the next day. The broth thickens overnight as the beans absorb it, so add a splash of stock or water when reheating on the stovetop.
What to cook next
- Hearty Beef Kale Soup
- Olive Beef Polpette Perfection
- Spicy Calabrian Lamb Ragù
- Savory Pork Noodle Stir-Fry









