Macro-Friendly Soup Recipes
It is officially soup season. And if you track your macros, you know that many creamy, hearty soups are a minefield of hidden fats and carbs. A bowl of soup from your favorite deli can clock in at 600+ calories and leave you hungry an hour later. But here is the good news: you don’t have to choose between a warm, satisfying bowl and your macro goals.
I started developing macro friendly soup recipes years ago, during a particularly cold winter when I was deep in a fat loss phase. I craved comfort food but didn’t want to blow my protein and carb targets. After dozens of trial batches, this chicken and white bean soup became my go to. It delivers that soul warming feeling of a classic chicken soup, but with a protein boost from lean breast and creamy cannellini beans. The best part? One bowl keeps you full for hours, and the macros fit neatly into almost any flexible dieting plan.
This recipe is designed for meal preppers, fitness enthusiasts, and anyone who wants to eat nutritious, satisfying food without spending hours in the kitchen. It is a staple in my weekly rotation, and I am excited to share it with you.
Recipe Card
Prep Time: 15 minutes | Cook Time: 35 minutes | Total Time: 50 minutes | Servings: 6
Ingredients
- 1 tablespoon olive oil
- 1 large yellow onion, diced (about 1 1/2 cups)
- 3 medium carrots, peeled and diced (about 1 cup)
- 3 celery stalks, diced (about 1 cup)
- 4 cloves garlic, minced
- 1 1/2 pounds boneless, skinless chicken breast (about 2 large breasts)
- 6 cups low sodium chicken broth
- 1 can (15 ounces) cannellini beans, drained and rinsed
- 1 can (14.5 ounces) diced tomatoes, no salt added
- 1 teaspoon dried oregano
- 1 teaspoon dried basil
- 1/2 teaspoon smoked paprika
- 1/2 teaspoon salt
- 1/4 teaspoon black pepper
- 2 cups fresh spinach, roughly chopped
- 2 tablespoons fresh lemon juice (about 1 lemon)
- Optional: 2 tablespoons grated Parmesan cheese per serving (adds 1g protein, 1g fat, 0g carbs)
Instructions
- Heat the olive oil in a large Dutch oven or heavy bottomed pot over medium heat.
- Add the diced onion, carrots, and celery. Cook, stirring occasionally, until the vegetables soften, about 5 to 6 minutes.
- Stir in the minced garlic and cook until fragrant, about 30 seconds.
- Place the chicken breasts on top of the vegetables. Pour in the chicken broth.
- Add the drained cannellini beans, diced tomatoes (with their juices), oregano, basil, smoked paprika, salt, and black pepper.
- Bring the soup to a boil, then reduce heat to low. Cover and simmer for 20 to 25 minutes, until the chicken is cooked through (internal temperature reaches 165 degrees F).
- Remove the chicken breasts from the pot and place them on a cutting board. Use two forks to shred the chicken into bite sized pieces.
- Return the shredded chicken to the pot. Stir in the chopped spinach and lemon juice. Cook for 2 minutes, until the spinach wilts.
- Taste and adjust seasoning with additional salt, pepper, or lemon juice if desired.
- Ladle into bowls and top with Parmesan cheese if using.
Tips & Tricks
1. Sear the chicken for deeper flavor. Before simmering, you can brown the chicken breasts in the pot with the oil for 2 to 3 minutes per side. Remove them, cook the vegetables, then return the chicken to simmer. This extra step adds a rich, savory note without any additional fat.
2. Use a lean protein swap if you want less fat. Chicken thighs will work, but they add about 4g more fat per serving. For the most macro friendly soup, stick with boneless, skinless chicken breast. Turkey breast is also a great substitute.
3. Do not overcook the spinach. Add it at the very end and let it wilt just until bright green. Overcooking makes it mushy and can turn the broth slightly bitter.
4. Bulk up the volume with extra veggies. If you want more fiber and lower calorie density, add a diced zucchini or a cup of chopped kale along with the spinach. Both cook quickly and add nearly zero macros.
5. Make it in an Instant Pot or slow cooker. To save time, sauté the vegetables using the sauté function on your Instant Pot, then add all remaining ingredients except spinach and lemon juice. Pressure cook on high for 12 minutes, quick release, shred the chicken, then stir in spinach and lemon juice. For a slow cooker, cook on low for 6 to 7 hours, then shred and finish with spinach.
Substitutions & Variations
Vegetarian option. Replace the chicken with two cans (15 ounces each) of chickpeas or extra firm tofu (diced and pan fried). Use vegetable broth instead of chicken broth. The protein will drop to about 22g per serving, but you can add a scoop of unflavored pea protein powder stirred into the broth after cooking.
Dairy free and Whole30. Omit the Parmesan cheese topping. This recipe is naturally dairy free and gluten free as written. Check your broth label to ensure it is Whole30 compliant.
Low carb / keto. Skip the cannellini beans and add an extra 8 ounces of chicken (total 2 pounds) plus 1 cup of chopped cauliflower florets. This reduces net carbs to about 12g per serving while keeping protein high.
Spicy version. Add 1/2 teaspoon red pepper flakes with the garlic, or stir in a chopped jalapeño with the vegetables.
Extra greens. Swap the spinach for chopped Swiss chard, kale, or collard greens. Add them earlier (step 5) because kale needs a few extra minutes to soften.
Storage & Meal Prep
This macro friendly soup is an ideal candidate for batch cooking. Store it in airtight containers in the refrigerator for up to 4 days. The flavors actually deepen after a day or two. For longer storage, freeze the soup in individual portions (without the spinach if possible) for up to 3 months. When reheating, add a handful of fresh spinach to each bowl and microwave or warm on the stovetop until wilted.
Portion tip: Use 2 cup containers for a filling lunch or dinner. Each serving as written is about 1 3/4 cups. If you are tracking macros, divide the finished soup into six equal portions using a kitchen scale.
For more batch cooking strategies, read our guide on and the
Nutrition Info
The following values are estimated per serving (1/6 of the recipe, without Parmesan):
- Calories: 305
- Protein: 38g
- Carbohydrates: 28g
- Fat: 8g
- Fiber: 7g
Nutrition facts are based on the ingredients listed and may vary based on brands and specific produce used.
FAQ
Can I use rotisserie chicken to save time?
Yes. Shred about 2 cups of rotisserie chicken (skin removed) and add it after simmering the vegetables and beans for 15 minutes. Simmer for another 5 minutes just to warm through. The sodium content will be higher, so adjust salt accordingly.
Is this soup freezer friendly?
Absolutely. Cool the soup completely, then transfer to freezer safe containers. Leave 1 inch of headspace for expansion. Thaw overnight in the refrigerator and reheat gently. Spinach may lose some texture after freezing, so consider adding fresh spinach when reheating.
How can I boost the protein even more?
Stir in 1 scoop of unflavored collagen peptides or chicken bone broth powder after shredding the chicken. This adds about 10g protein with minimal impact on taste or texture. You can also top each bowl with a tablespoon of hemp hearts (3g protein).
What is the best broth to use?
Low sodium chicken broth is ideal for controlling salt. If you use regular broth, reduce the added salt to 1/4 teaspoon. Homemade bone broth adds extra collagen and a deeper flavor.
Can I make this in a slow cooker?
Yes. Sauté the vegetables on the stovetop, then transfer everything except the spinach and lemon juice to a slow cooker. Cook on low for 6 to 7 hours or on high for 3 to 4 hours. Shred the chicken, then stir in spinach and lemon juice before serving.
For more macro friendly meal ideas, check out our collection of and the