Save There's something about the smell of garlic and cream simmering together that makes a weeknight feel special. I discovered this soup on a chilly evening when I was craving something both light and indulgent, and I realized turkey meatballs could be the answer to making a restaurant-quality Tuscan soup at home without hours of work. The sun-dried tomatoes were a happy accident—I had them leftover from a salad, tossed them in, and suddenly the whole pot tasted like I'd been simmering it all day. Now it's become one of those recipes I make when I want to feel like I've done something impressive without actually spending much time at the stove.
I made this for a friend who was going through a rough week, and watching her face light up when she tasted it—that perfect moment when the creaminess and tomato hit at once—reminded me that sometimes the simplest gestures matter most. She still texts me asking for it.
What's for Dinner Tonight? 🤔
Stop stressing. Get 10 fast recipes that actually work on busy nights.
Free. No spam. Just easy meals.
Ingredients
- Ground turkey: Leaner than beef but still flavorful when seasoned properly; buy it fresh if you can and handle it gently so the meatballs stay tender.
- Breadcrumbs: They keep the meatballs moist and light, but don't overmix once you add them or you'll end up with dense little hockey pucks.
- Parmesan cheese: Use freshly grated if possible—the pre-shredded stuff has anti-caking agents that make it taste metallic and don't melt as smoothly into the broth.
- Egg: Your binding agent; it keeps everything together without needing extra filler.
- Garlic and parsley: These are what make the meatballs taste homemade and alive instead of generic.
- Olive oil: Go for a good quality one; it's one of the few ingredients you actually taste directly.
- Heavy cream: This is what makes it Tuscan and luxurious; don't skip it or substitute with milk unless you want a thinner, less satisfying soup.
- Sun-dried tomatoes: Packed in oil gives you more flavor; if you buy the dry kind, rehydrate them first so they're plump and sweet.
- Fresh spinach: Baby spinach wilts perfectly and adds color and nutrition without any bitterness.
Tired of Takeout? 🥡
Get 10 meals you can make faster than delivery arrives. Seriously.
One email. No spam. Unsubscribe anytime.
Instructions
- Mix your meatball base:
- Combine the ground turkey with breadcrumbs, Parmesan, egg, minced garlic, fresh parsley, oregano, salt, and pepper in a bowl, stirring gently with your hands just until everything holds together. Overworking the mixture toughens the meatballs, so stop as soon as you can form them into balls.
- Shape and brown:
- Roll the mixture into roughly 1-inch balls—about 20 total—and heat olive oil in your large pot over medium heat until it shimmers. Working in batches so you don't crowd the pan, brown the meatballs on all sides for about 4 to 5 minutes, then set them aside on a plate.
- Build your flavor base:
- In the same pot with the oil and browned bits still clinging to the bottom, add the chopped onion and cook gently until it's softened and turning translucent, around 4 minutes. Add the minced garlic, stir, and let it bloom for just a minute until the smell makes you want to dive into the pot.
- Create the broth:
- Pour in your chicken broth, scraping at the bottom of the pot with a wooden spoon to loosen all those caramelized bits—that's pure flavor. Bring the broth to a simmer, letting it warm through for a minute or two.
- Bring it all together:
- Return the browned meatballs to the pot along with the chopped sun-dried tomatoes and dried Italian herbs, then let everything simmer gently for 12 to 15 minutes until the meatballs are cooked all the way through and the broth has absorbed the tomato flavor. You'll know they're done when you cut one open and there's no pink inside.
- Add the cream:
- Lower the heat to avoid any boiling, then stir in the heavy cream and grated Parmesan cheese slowly, stirring constantly so it incorporates smoothly and becomes one cohesive, luxurious broth. Let it simmer gently for 2 to 3 minutes—this is not the time to rush or turn up the heat.
- Finish with spinach:
- Add the fresh baby spinach a handful at a time, stirring gently as each batch wilts into the soup, which takes only about 1 to 2 minutes total. Taste as you go and season with salt and pepper until it tastes like something you'd order at your favorite Italian restaurant.
- Serve with love:
- Ladle the soup into bowls, tearing fresh basil over the top if you have it, and grate a little extra Parmesan over each serving. Serve immediately with crusty bread and maybe a glass of Pinot Grigio if that's your kind of evening.
Save There was a moment last winter when I made this soup for my family on a snowy afternoon, and my daughter asked if we could make it again tomorrow. That's when I knew it had crossed from being a recipe into something that actually belonged in our kitchen rotation.
Still Scrolling? You'll Love This 👇
Our best 20-minute dinners in one free pack — tried and tested by thousands.
Trusted by 10,000+ home cooks.
When to Make This Soup
This soup thrives in the cooler months when you want something warm and substantial, but it's also light enough that you won't feel weighed down afterward. It's perfect for meal prep because it reheats beautifully and actually tastes better the next day once all the flavors have gotten to know each other.
Customizing Your Bowl
The beauty of this recipe is that it's forgiving enough to adapt without losing its character. I've made it lighter with half-and-half when I was watching calories, swapped in ground chicken when turkey wasn't in the house, and even added white beans or diced zucchini when I wanted to stretch it further. The sun-dried tomatoes are what tie it all to Tuscany, so I'd keep those, but everything else is flexible enough to work with what you have.
Serving Suggestions and Final Touches
Serve this with something to soak up the incredible broth—crusty bread is traditional, but some nights I pour it over pasta or serve it with garlic crostini for something fancier. A crisp Italian white wine on the side, like a Pinot Grigio or a light Vermentino, turns dinner into an occasion without any extra fuss.
- Tear fresh basil over the top just before serving for a bright, aromatic finish.
- Keep extra Parmesan nearby so everyone can add as much as they want.
- If making ahead, store the soup and meatballs separately to keep them from getting waterlogged overnight.
Save This is the kind of soup that reminds you why cooking at home is worth the effort—it's nourishing, impressive, and entirely within reach. Make it on a night when you need comfort, and you'll understand why it keeps coming back to my table.
Recipe FAQs
- → Can I make the meatballs ahead of time?
Absolutely. Shape and brown the meatballs up to a day in advance, then refrigerate until you're ready to simmer them in the broth. You can also freeze the browned meatballs for up to 3 months before adding them to the soup.
- → What can I substitute for heavy cream?
Half-and-half creates a lighter but still creamy soup. For a dairy-free option, full-fat coconut milk adds richness, though it will impart subtle coconut flavor. Cashew cream also works beautifully for plant-based versions.
- → Can I use ground chicken instead of turkey?
Yes, ground chicken works perfectly as a substitute. Keep in mind that chicken may be slightly leaner, so the meatballs might be less tender. Consider adding an extra tablespoon of olive oil when browning them.
- → How do I store leftovers?
Cool completely and refrigerate in an airtight container for up to 4 days. The soup actually tastes better the next day as flavors meld. Reheat gently over medium-low heat, adding a splash of broth if it's too thick.
- → Can I make this gluten-free?
Simply replace the breadcrumbs with gluten-free alternatives—almond flour, crushed gluten-free crackers, or seasoned rice crumbs all work well. Ensure your broth and other ingredients are certified gluten-free if needed.