This easy meatball soup with spinach is a flavorful, comforting soup recipe. The warm flavor of nutmeg in the meatballs makes this a perfect autumnal soup recipe.

A warm, comforting meatball soup that’s perfect for a chilly night
I developed this easy meatball soup with spinach recipe years ago and recently decided to revisit it after receiving a positive review from a reader. While I kept nearly all aspects of the original recipe the same, I found a few opportunities to streamline the dish and make it even easier.
What I love about this dish is the unique flavor of the meatballs. Nutmeg–traditionally found in Swedish meatballs–adds a fragrant warmth, while white pepper adds a bright earthiness that pairs well with the nutmeg. I reference a similar flavor profile in my Swedish “meatball” mushroom recipe because I love how nutmeg and white pepper work together.
Where I decided to change the recipe is in the preparation of the meatballs. Originally, I fried the meatballs and layered in the soup ingredients from there. I’ve found that baking the meatballs makes this recipe so much easier. It allows me to start the soup as the meatballs bake and reduces the mess and splatters that come with frying meatballs. A win-win!
You can bake or fry the meatballs, depending on your preference. The one benefit of frying the meatballs in the same pot used for the soup is the layer of fond that acts as a flavor foundation for the soup. You’ll miss out on that additional layer of flavor when baking the meatballs, but I still found the soup and meatballs to be plenty flavorful, and I preferred not having to fry the meatballs.

How to make this meatball soup with spinach recipe
Have I convinced you to try this recipe out yet? I hope so! Let’s get into the full step-by-step preparation of this beautiful meatball soup recipe.

What you need
You’ll need quite a few spices and aromatics for the meatballs, but the soup has a relatively lean ingredient list.
- Meatballs: You’ll need paprika, dry parsley, garlic powder, dry thyme, garlic powder, nutmeg, white pepper, and crushed red pepper. I also add a freshly minced shallot. I use lean ground beef, but pork, chicken, or turkey will also work. You could also use a mix of beef, pork, and veal if you like. You’ll also need eggs, milk, and panko.
- Soup: I prepare the soup with diced onion, minced garlic, dry thyme, crushed red pepper, and pearl couscous. I add chicken broth right before adding the meatballs.
- Finishing touches: I finish the soup with minced fresh herbs, like scallions, parsley, dill, or a blend. I also add fresh spinach and lemon juice.
How to make it
While meatballs can be time-consuming, I think you’ll love how (relatively) easy this recipe is to make. The recipe is not too difficult to prepare, but rolling out two pounds of meatballs takes time! Once you’re done with that, everything else comes together in a flash.





- Step 1: Prepare the meatball base. Combine the spices and minced shallot in a large bowl. Add lightly beaten eggs along with panko and milk. Stir well to combine. Soak for about 10 minutes. This softens the panko and makes it easier to incorporate into the beef.



- Step 2: Make the meatballs. Add the beef to the mixture and mix until combined. Form into tablespoon-sized meatballs. Ideally, the uncooked meatballs will weigh about 1 ounce each, but you can make these as small or large as you like and adjust the baking time as needed. If you make the meatballs the same size as I did–about 1 ounce each–you will end up with about 48 meatballs. Arrange the meatballs on two baking sheets.


- Step 3: Bake the meatballs. Transfer the meatballs to an oven that has been preheated to 400ºF. Bake for 20 minutes, flipping once midway through cooking. If your meatballs are the same size as mine, they will likely be completely cooked through to 165ºF at this point. However, if they are shy of this temperature, don’t fret! You will continue cooking them in the soup.




- Step 4: Start the soup. As soon as you put the meatballs in the oven, prepare the soup. Heat olive oil in a pot over medium heat. Add the diced onion and sauté for 3 to 4 minutes. Add the garlic, thyme, and crushed red pepper and cook for 1 minute until fragrant. From there, add the pearl couscous and toast briefly, about 1 to 2 minutes.


- Step 5: Simmer the soup. Add the chicken broth to the soup and bring to a boil. At this point, your meatballs should be about done baking, so add them to the soup now. Reduce the heat and simmer for 12 to 15 minutes or until the pearl couscous is al dente.


- Step 6: Finish the soup. As the soup simmers, chop the spinach and fresh herbs. You don’t have to chop the spinach, but I prefer it over whole baby spinach leaves. Once the pearl couscous is tender, add the spinach and fresh herbs to the soup. Finish with lemon juice and simmer for 5 minutes.

Now you’re ready to serve the meatball soup! Simply ladle it into bowls and dig in. If I have extra fresh herbs, I’ll add a few on top, but no need to fuss over chopping extra parsley or scallions for garnish if you don’t feel like it.

Easy Meatball Soup with Spinach
Equipment
Ingredients
Meatballs:
- 2 pounds ground beef (90/10)
- 1 shallot (peeled and minced)
- 1 tablespoon dry parsley
- 2 teaspoons garlic powder
- 2 teaspoons paprika
- 1 teaspoon white pepper (or black pepper)
- 1 teaspoon crushed red pepper
- 1 teaspoon dry thyme (lightly crushed between your fingers)
- ½ teaspoon nutmeg
- 2 eggs (lightly beaten)
- 1 cup whole milk
- 1 cup panko
- 2 teaspoons kosher salt
- Neutral oil ( for greasing)
Soup:
- 1 tablespoon extra virgin olive oil
- 1 yellow onion (peeled and diced; about 3 ounces total)
- 3 cloves garlic (peeled and minced)
- 1 teaspoon dry thyme
- ½ teaspoon crushed red pepper
- 6 cups chicken broth
- 1 cup pearl couscous (or use fregola, orzo, or ditalini)
- 5 ounces baby spinach (roughly chopped)
- ½ cup parsley (loosely packed; minced or use minced scallions or dill)
- 1 lemon (juiced; about 1 tablespoon juice total)
- Salt and pepper to taste
Instructions
Prepare the meatballs:
- Combine the minced shallot, dry parsley, garlic powder, paprika, white pepper, crushed red pepper, dry thyme, and nutmeg in a large bowl.
- Add the lightly beaten eggs, panko, and milk and stir to combine. Set aside for 10 minutes.
- Add the beef to the bowl. Add 2 teaspoons salt. Use your hands to mix the ingredients until completely combined. See Note 1.
Make the meatballs:
- Preheat oven to 400ºF.
- Lightly grease two baking sheets with neutral oil. See Note 2.
- Scoop a tablespoon of the meat mixture and roll it into a meatball weighing approximately 1 ounce.
- Arrange the meatballs on the baking sheets.
Bake the meatballs:
- Transfer the baking sheets to the preheated oven. Bake for 20 minutes, flipping once halfway through. Remove from the oven and set aside. The meatballs should be 165ºF. They will continue cooking in the broth, so it is unnecessary to continue baking past 20 minutes.
Start the broth:
- Heat 1 tablespoon extra virgin olive oil over medium heat in a large soup pot. Once hot, add the diced onion and sauté for 5 minutes.
- Add the minced garlic, dry thyme, and crushed red pepper. Cook for 1 minute until fragrant. Season with salt and pepper.
- Add the pearl couscous and sauté for 1 to 2 minutes until lightly toasted.
Simmer the broth:
- Add the chicken broth and bring to a boil. Reduce the heat to low. Carefully add the meatballs to the broth as soon as they finish baking.
- Simmer uncovered for 12 to 15 minutes or until the pearl couscous is al dente. Taste and add salt and pepper if needed.
Finish the soup:
- Add the spinach, parsley, and lemon juice to the soup. Simmer for 5 minutes until the spinach is bright green. Turn off the heat.
To serve:
- Ladle the soup into bowls. Enjoy!







Hi. I want to try this recipe but only for 1 serving. How would i convert this?
Thank you, Joan
Make half and have leftover for another day
That’s what I did
I’ve added celery and carrots with onions and sautéed it all before adding broth and the rest… second time I’m making it, absolutely delicious!
I’m so happy to hear that — thank you!