Keto Italian Wedding Soup

Annie Lampella @ Ketofocus

By Annie Lampella, Pharm.D.

Published February 14, 2025 • Updated February 24, 2026

Reader Rating
4.9 Stars (11 Reviews)

This post may contain affiliate links. See my disclosure policy.

I make this keto soup at least twice a month. Tender pork meatballs, spinach, and lupini bean orzo in a rich chicken broth, all for 8.3g net carbs per bowl.

I have been making Italian wedding soup for years. Before keto, it was one of my go-to comfort meals because it freezes well and the flavor actually gets better the next day. The problem was always the orzo adding 15 to 20g of carbs per serving. My boys will eat anything if there are meatballs involved, so this has been in steady rotation since I figured out the pasta swap.

Then I found lupini bean pasta. It looks like orzo once it cooks down in the broth, and the texture is close enough that my family did not notice the swap. One serving of lupini rice has only 1g net carbs compared to 20g+ for traditional orzo. I switched over completely from shirataki noodles for soups like this because the flavor and mouthfeel are so much closer to the real thing. Shirataki works in stir fry, but in broth it just floats there and never absorbs anything. Lupini softens the way pasta should.

A ladle holding a serving of italian wedding soup with meatballs, spinach, carrot and rice pasta.

What makes this recipe low carb?

Pork panko breadcrumbs. Instead of adding traditional breadcrumbs to the meatballs, I use ground pork rinds. They work as a binding agent with zero carbs and high protein. I tested almond flour in this recipe and the meatballs came out dense and gummy after simmering in broth for 10 minutes. Pork panko absorbs moisture without that problem.

Lower carb vegetables. Spinach and celery keep the carb count down. I add a small amount of onion and carrot for flavor and color. These are slightly higher in carbs, so you can reduce them if you are tracking closely.

Lupini bean pasta. My favorite pasta swap right now. The flavor and texture are closer to traditional noodles than anything else I have tried. Lupini rice is high protein and only 1 net carb per serving. Once it cooks in the broth, it looks exactly like orzo.

One thing I started doing with this soup (borrowed from my minestrone soup) is dropping a parmesan rind into the broth while it simmers. It melts slowly and adds this deep, savory richness that you cannot get from grated parmesan alone. Fish it out before serving. For a heartier Italian one-pot meal, my Italian beef stew reheats just as well.

If you like swapping lupini into other pasta dishes, my spaghetti uses the same approach with the noodle shape instead of rice.

How to Make Keto Italian Wedding Soup

Start by mixing the meatball ingredients: ground pork, Italian sausage, pork panko, parmesan, egg, and Italian seasoning. Roll them small, about 1 inch across. I have made these bigger and the ratio of broth to meatball gets off. Smaller ones give you more per spoonful and cook faster.

Brown the meatballs in a hot skillet until they have a crust on the outside. They do not need to be cooked all the way through since they finish in the broth. Remove them and saute celery, carrot, onion, and garlic in the same pan. The fond from the meatballs adds a layer of flavor to the vegetables.

Add chicken broth and bring to a boil, then reduce to a simmer. If you have a parmesan rind, drop it in now. Drop the meatballs back in and cook for about 15 minutes until they are fully cooked through. Add the lupini rice during the last 5 minutes so it softens without getting mushy.

Stir in fresh spinach right at the end. It wilts in about 30 seconds. Season with salt and pepper, and finish with a squeeze of lemon juice if you want a little brightness. If you want to make a larger batch of meatballs on their own, my skillet meatballs recipe covers that.

Youtube
639K+ subscribers
Discover More Keto Recipes on Our Channel

Explore 684+ keto recipe videos with step-by-step instructions, tips, and tricks to make keto easy.

Recipe
Print Pin

Keto Italian Wedding Soup

4.9 (11) Prep 20m Cook 30m Total 50m 4 servings

Keto Meatballs Ingredients

  • 1/2 lb ground beef (93/7)
  • 1/2 lb ground Italian sausage
  • 1/2 cup pork panko
  • 1 large egg
  • 1/3 cup grated parmesan cheese
  • 3 cloves garlic, minced
  • 2 tablespoons finely chopped parsley
  • 1 teaspoon dried oregano
  • 1 teaspoon salt
  • 1/2 teaspoon black pepper

Keto Italian Wedding Soup Base Ingredients

  • 3 tablespoons olive oil
  • 1/2 medium yellow onion, chopped
  • 1 carrot, sliced
  • 3 stalks celery, sliced
  • 3 cloves garlic, minced
  • 1/2 teaspoon salt
  • 1/2 teaspoon black pepper
  • 8 cups chicken broth
  • 1 cup lupini rice
  • 3 cups baby spinach leaves

Step by Step Instructions

Step by Step Instructions

1
Meatball mixture

Add all ingredients for the meatballs to a large bowl and mix until combined.

A large glass bowl filled with meatball mixture ingredients like egg, parmesan cheese and beef.
Ingredients for this step
  • 1/2 lb ground beef (93/7)
  • 1/2 lb ground Italian sausage
  • 1/2 cup pork panko
  • 1 large egg
  • 1/3 cup grated parmesan cheese
  • 3 cloves garlic, minced
  • 2 tablespoons finely chopped parsley
  • 1 teaspoon dried oregano
  • 1 teaspoon salt
  • 1/2 teaspoon black pepper
2
Form small meatballs

Form small meatballs by scooping up 1 heaping teaspoon of the mixture and rolling it in a ball that is about ¾-1-inch in diameter. Repeat with remaining mixture. This should make around 75-80 meatballs.

A teaspoon filled with meatball mixture on a baking sheet next to small meatballs formed on the tray.
3
Cook the meatballs

Pour olive oil into a large pot or Dutch oven. Heat over medium heat. When oil is hot, fry the meatballs in batches, turning to brown all sides, about 3-4 minutes per batch. Transfer to a paper towel-lined plate and repeat with remaining meatballs.

Small meatballs seared in a Dutch oven.
Tip You don't have to worry about cooking the meatballs completely through as we will add them back to the soup to simmer and should continue cooking in the broth.
Ingredients for this step
  • 3 tablespoons olive oil
4
Cook the veggies

To the Dutch oven, add the onion, carrot and celery. Cook, stirring occasionally, until the vegetables are slightly tender. Add the garlic, salt and pepper. Stir and cook until fragrant, about 1 minute.

Carrots, celery and onion cooked in a Dutch oven.
Ingredients for this step
  • 1/2 medium yellow onion, chopped
  • 1 carrot, sliced
  • 3 stalks celery, sliced
  • 3 cloves garlic, minced
  • 1/2 teaspoon salt
  • 1/2 teaspoon pepper
5
Make it a soup

Return the meatballs to the pot and add broth. Bring to a simmer over medium-high heat. Stir in lupini rice, lower the heat to a simmer and let cook for 6-8 minutes or until rice is tender.

A Dutch oven with soup next to a bowl of lupini pasta rice.
Ingredients for this step
  • 8 cups chicken broth
  • 1 cup lupini rice
6
Marry the spinach with the meatballs

Turn off the heat and stir in the spinach until wilted. Taste and season with salt and pepper if needed.

Spinach leaves wilting in a soup filled Dutch oven.
Tip To serve, top with grated parmesan cheese and chopped parsley if desired.
Ingredients for this step
  • 3 cups baby spinach leaves
Nutrition Per Serving
474 Calories
29.8g Fat
41.5g Protein
8.3g Net Carbs
17.9g Total Carbs
4 Servings
Nutrition disclaimer

The nutrition information provided is an estimate and is for informational purposes only. I am a Doctor of Pharmacy (Pharm.D.); however, this content is not intended to be a substitute for professional medical advice, diagnosis, or treatment. Always consult your physician or other qualified health provider before making any lifestyle changes or beginning a new nutrition program.

Your Macros. Your Recipes. Calculated in 60 Seconds.

Get personalized keto macros and instantly see which recipes fit your targets. No more guessing what to eat.

Get My Macros + Recipes →

Get weekly keto recipes from Annie.

Join the list and get new recipes delivered to your inbox every week.

Keto Italian Wedding Soup

Frequently Asked Questions

Can I use escarole instead of spinach?

I use escarole in my minestrone and it works there because it simmers for a long time and breaks down. In this recipe, I prefer spinach because it wilts in 30 seconds and keeps a cleaner texture in the broth. If you want to use escarole, chop it fine and add it about 5 minutes before the end instead of 30 seconds. The stems take longer than spinach leaves. I have made it both ways and my family prefers the spinach version, but escarole gives you a more traditional Italian flavor.

Can I make this in the Instant Pot or slow cooker?

I have made this both ways. For the Instant Pot, brown the meatballs using the saute function, add the broth and vegetables, and pressure cook on high for 8 minutes with a quick release. Add the lupini rice and spinach after releasing pressure and let them sit in the hot broth for 5 minutes. For the slow cooker, brown the meatballs on the stove first (you still need that crust), then add everything except the lupini rice and spinach. Cook on low for 4 to 5 hours. Stir in the rice and spinach during the last 10 minutes. The stovetop version gives you better meatball texture, but the slow cooker is what I use when I want it ready at dinner without babysitting a pot.

What can I serve with this soup?

I almost always serve this with bread for dipping because the broth is too good to leave in the bowl. Keto rolls or a slice of garlic bread work well. A simple side salad with an Italian vinaigrette rounds it out if you want a bigger meal. When I am meal prepping, I just eat the soup on its own since the meatballs and lupini rice make it filling enough. My usual serving is a big bowl with two rolls on the side.

Can I add an egg to the broth for extra richness?

I do this sometimes. It is called stracciatella, where you drizzle beaten egg into the simmering broth and stir gently so it forms thin ribbons. It adds protein and a silky texture. I beat one or two eggs with a tablespoon of grated parmesan, then pour it in a thin stream while stirring the broth in one direction. The trick is keeping the broth at a gentle simmer, not a rolling boil, or the egg breaks into tiny bits instead of ribbons. My kids think it looks cool, and it adds about 6g of protein per serving.

I can't have pork. What can I substitute?

I have made this with ground chicken and turkey sausage and it works well. Replace the pork sausage with ground chicken or turkey sausage, and use all ground beef for the meatball mixture. For the pork panko, substitute 1/4 cup almond flour or add an extra 1/4 cup of grated parmesan as a binder. The meatballs will be slightly less crispy on the outside but they hold together in the broth. I prefer the parmesan swap over almond flour here because almond flour gets gummy in liquid.

I can't find lupini pasta. What can I use instead?

Cauliflower rice is the closest texture match for the orzo shape. Hearts of palm rice works well too. I have also used shirataki rice (rinse it well first to remove the packaging smell), but I find it does not absorb flavor the way lupini does. You can also skip the pasta entirely. The soup is filling on its own with the meatballs and vegetables. Each substitution changes the carb count slightly, so recalculate if you are tracking closely.

Can I freeze this soup?

I freeze batches of this regularly. Store the broth, meatballs, and vegetables together in an airtight container for up to 3 months. Keep the lupini rice separate because it absorbs liquid and turns soft if frozen in the soup. When ready to eat, thaw overnight in the fridge, reheat on the stove, and add fresh lupini rice. I also freeze extra uncooked meatballs on a parchment-lined sheet pan. Once frozen, I transfer them to a bag and drop them directly into simmering broth from frozen (add about 5 extra minutes of cook time).

Where do the 8.3g net carbs come from?

The carbs come mainly from the vegetables. Onion, carrot, celery, and garlic contribute about 4 to 5g together. The lupini rice adds about 1g, and the remaining carbs come from the egg, parmesan, and seasonings in the meatballs. Spinach adds less than 1g. When I want to lower the count, I reduce the carrot and onion amounts, which drops it by about 1 to 2g per serving without losing much flavor.

Browse by Ingredient
Similar Recipes

Others looking for “Keto Italian Wedding Soup” also liked:

A bowl of meatball soup with spinach and carrot next to parsley and salt.

Why is it called 'married soup'?

Most people assume this is a soup served at Italian weddings. It is not. The name comes from “minestra maritata,” which translates to “married soup” in Italian. The “marriage” refers to the combination of meat and greens in the broth, not an actual wedding celebration. The flavors from the meatballs, vegetables, and broth are said to be married together.

Traditional versions use small meatballs (sometimes called polpettine), escarole or spinach, and a small pasta like acini di pepe or orzo. I kept that same flavor profile but swapped the high-carb ingredients. The result tastes like the original with a fraction of the carbs. If you like Italian comfort food without the carbs, my baked ziti uses the same swap philosophy.

Tips for the best meatballs in soup

The meatball mixture uses a combination of ground pork and Italian sausage. The sausage adds seasoning so you do not have to measure out a dozen individual spices. Pork panko is the binding agent instead of breadcrumbs, and it works better than almond flour here because it absorbs moisture without making the meatballs dense. I tested both side by side and the almond flour batch fell apart in the broth after 10 minutes.

Roll the meatballs to about 1 inch. If they are too large, they take over the bowl and the broth-to-meatball ratio gets off. I usually get about 24 from one batch. Brown them in a hot pan first before adding to the broth. This creates a crust that holds their shape while simmering and adds depth to the flavor. My boys will eat soup as long as there is meat in it, and these keto meatballs are the reason they ask for this on cold nights.

How to store and meal prep this soup

Store the soup and lupini rice separately. The lupini rice absorbs broth if it sits overnight, and it gets soft. I learned this the hard way after my first batch. Keep leftover rice in a sealed container in the fridge and add it to each bowl when you reheat.

The soup base (broth, meatballs, vegetables) keeps in the fridge for up to 5 days. It also freezes well for up to 3 months. To reheat from frozen, thaw overnight in the fridge and warm on the stove over medium heat. The meatballs actually taste better the next day because they absorb more flavor from the broth. This is one of the best keto soups for meal prep because the base holds up so well. If you are looking for other soups that freeze well, my turkey soup and chicken and rice soup are solid options.

What is lupini bean pasta?

Lupini beans are a legume that is naturally high in protein and very low in digestible carbs. When processed into pasta shapes, they hold their structure in hot liquid better than most low-carb pasta alternatives I have tried. One serving of lupini rice has about 1g net carbs and 11g protein. Regular orzo has around 20g of carbs per serving.

The brand I use most often is LIVIVA (sold on Amazon and some grocery stores). They make several shapes including rice (orzo), penne, and spaghetti. For this soup, the rice shape works best because it mimics the look of orzo. If you cannot find lupini pasta, cauliflower rice or hearts of palm rice are decent substitutes, though the texture is different. I also use lupini penne in my chicken noodle skillet for another way to use it.

About the Author
Annie Lampella, Pharm.D.

Annie Lampella, Pharm.D.

Annie is a Doctor of Pharmacy, mom, and the recipe creator behind KetoFocus. With a B.S. in Genetics from UC Davis, she has over 14 years of experience developing family-friendly keto recipes based on the science of human metabolism.

More Dinner Recipes

crispy ground beef cooked with broccoli florets in a skillet
10 Mins
Keto Beef and Broccoli
4.6 Stars (9 Reviews)

My go-to keto dinner when nothing else is planned. Ground beef, soy sauce, sesame oil, broccoli. Chinese takeout flavor in 10 minutes, 6g net carbs.

See the Recipe
keto lasagna layers on a plate with a fork
30 Mins
Low Carb Keto Lasagna
4.8 Stars (69 Reviews)

I use deli chicken instead of noodles in this keto lasagna. No watery layers, zero prep, 30 minutes to the oven. 34g protein, 4g net carbs. Day 2...

See the Recipe
crispy chicken fried steak on a plate with gravy on top and a couple of keto sides
22 Mins
Keto Chicken Fried Steak
4.9 Stars (21 Reviews)

My husband's favorite keto chicken fried steak. Cubed steak double-dredged in almond flour and seasoned pork rinds, fried in butter until...

See the Recipe
A creamy homemade hamburger helper casserole in a skillet topped with parsley.
17 Mins
Keto Hamburger Helper
4.8 Stars (12 Reviews)

Hamburger helper was one of my favorite meals as a kid, and I get why my mom loved it. Now I make a homemade keto hamburger helper that's high in...

See the Recipe
four baked sausages stuffed with cheese and topped with parsley
45 Mins
Stuffed Italian Sausage
5 Stars (9 Reviews)

For nights when dinner needs to happen fast, this stuffed Italian sausage is my go-to. Mozzarella cheese sticks stuffed inside, baked in marinara,...

See the Recipe
ground beef stuffed red peppers on a plate
30 Mins
Keto Stuffed Peppers
4.8 Stars (15 Reviews)

Ground beef and cream cheese stuffed peppers baked at 350 for 15 minutes. 6g net carbs, 22g protein, and everything cooks in one skillet and pan.

See the Recipe
Reviews 18
4.9 Stars (11 Reviews)
  1. J
    Jeff Mar 21, 2026

    My nonna made wedding soup every Sunday and I stopped letting myself have it when I started keto two years ago. Made this last week. The second those little meatballs hit the Dutch oven, the kitchen smelled exactly like her house. I was so nervous about rolling them small enough but they held together better than I expected. First bowl of something that's actually brought me back.

  2. D
    Dani Mar 21, 2026

    Made this four or five times now. Lupini bean orzo holds up really well after a day in the fridge, doesn't get mushy like regular pasta. Started doubling the meatball batch and freezing half. Always have them ready, cuts assembly way down on weeknights. Soup's the same either way -- just pull them from frozen and add a few extra minutes to the simmer.

  3. D
    Dana Mar 20, 2026

    The lupini bean orzo almost talked me out of making this (keto pasta substitutes haven't been kind to me) but it held its texture in the broth way better than expected. Rest of the soup came together fast in my Dutch oven. Already doubling the meatball batch next time.

  4. E
    Elizabeth Mar 15, 2026

    I've made probably four different keto Italian wedding soup recipes trying to find one that didn't feel like a consolation prize. The lupini bean orzo is what does it, it actually behaves like pasta in the broth and holds its shape instead of turning to mush halfway through the bowl. Italian sausage in the meatball mix gives them a depth the all-beef versions I've tried just don't have. Sticking with this one.

    1. Annie Lampella
      Annie Lampella Mar 15, 2026

      Consolation prize soups are the worst. The sausage is what turns it. Tried straight beef early on and couldn't figure out why it fell flat.

  5. A
    Ashley Mar 10, 2026

    Made a double batch on Sunday and the meatballs hold up freaking beautifully through the week. The lupini bean orzo doesn't go mushy either, which almost never happens with soup leftovers. This is my new Sunday prep staple.

    1. Annie Lampella
      Annie Lampella Mar 11, 2026

      The lupini rice holds up better than anything I've found for soup. Real orzo would've dissolved by Tuesday. Double batches are basically required with this one.

  6. A
    Amber Mar 3, 2026

    My son ate every meatball first, then drank the broth straight from the bowl. That's the review.

  7. J
    Jordan Feb 28, 2026

    This is probably my eighth time making it, and I think I finally figured out the meatball thing. I was rolling them too loose at first and they'd start to fall apart in the broth. Once I started packing them a little tighter, they hold up the whole way through reheating, which matters because I always make a full pot and eat it over a few days. The lupini bean orzo is still the part that surprises me every time, the texture in soup is so much closer to real orzo than I expected. Reheated a bowl this morning after a cold night and the broth had thickened up overnight in a way that made it feel even richer. This one is staying in my winter rotation for the rest of the season.

    1. Annie Lampella
      Annie Lampella Mar 6, 2026

      The overnight broth is the best part. I save a bowl just for the next morning. Tight pack is right, loose ones start going before the second reheat.

  8. H
    Hannah F. Feb 28, 2026

    Threw a parmesan rind in while it simmered, pulled it out at the end, and the soup was so much richer I almost don't want to make it without one now.

    1. Annie Lampella
      Annie Lampella Mar 1, 2026

      Parmesan rind is one of those things that sounds fussy but isn't. I throw one in my minestrone all the time and totally forgot to mention it here. Now I can't skip it.

  9. S
    Sonia E. Feb 27, 2026

    Italian wedding soup was the first thing I gave up when I started keto, and I stopped missing it after a few months. Made this on a snow day last week because I needed something warm and I had the ingredients. The lupini bean orzo was the part I didn't expect to work, but it pulled the whole soup together. Couldn't think of anything it was missing.

    1. Annie Lampella
      Annie Lampella Feb 28, 2026

      Snow day was the right call for this one. The lupini orzo is what gets people - it holds shape in the broth instead of going soft.

  10. L
    Luz Feb 20, 2026

    First time making this and I kept second-guessing the meatball size, but they held together perfectly. Kitchen smelled like Sunday dinner the whole time it simmered. Any brand of lupini bean orzo work, or do you have a favorite?

    1. Annie Lampella
      Annie Lampella Feb 20, 2026

      The smell is the whole thing honestly. Any brand works for the orzo, they rinse and cook the same.

  11. E
    Eva Feb 15, 2025

    One of the best soup! Our whole family loved it!!

    1. Annie Lampella
      Annie Lampella Feb 17, 2025

      The meatballs are what my boys ask about. They'll eat soup if there's meat in it.

Leave a Review