This is everything you love about stuffed bell peppers in a thick, cozy, one-pot soup that’s on the table in 40 minutes. Featuring savory seasoned beef, sweet softened peppers, and rich garlicky tomato, you won’t even miss the dairy, grains, or added sugar.
Stuffed pepper soup usually leans on two things: rice for body and Worcestershire sauce for depth. However, neither ingredient works for the Whole30 elimination phase. In our version, cauliflower rice adds thickness and body, while coconut aminos and Whole30-compatible fish sauce adds umami and depth.
Tying it all together is Whole30 Approved® Kettle & Fire Beef Bone Broth, which brings an aromatic base and rich, savory taste to the soup. This recipe is perfect for busy weeknights, and it reheats beautifully all week long.
Why we’re using Kettle & Fire Beef Bone Broth
The broth isn’t background here; it’s what gives this soup its rich, deep flavor. Bone broth carries collagen protein in a way that thinner stock doesn’t. Simmering concentrates it into a silky texture that clings to the back of a spoon—no flour, starch, or thickener required.
Whole30 Approved® Kettle & Fire Beef Bone Broth is made with bones from 100% grass-fed and grass-finished cattle raised without added hormones or antibiotics. It’s slow-simmered more than 20 hours with organic vegetables and herbs, apple cider vinegar, and sea salt. In fact, that’s the entire ingredient list; there is no added sugar, soy, or gluten, and it features 10 grams of protein per cup.
Kettle & Fire Bone Broth is shelf-stable too, and we appreciate that on a busy weeknight. Keep a few cartons in the pantry, and this becomes a soup you can make on the fly, with just a few simple whole-food ingredients.
Choosing and chopping the bell peppers
For a more colorful dish, use a mix of bell peppers, but make sure at least one is green. Red, orange, and yellow are sweeter, and a pot built entirely from these colors can skew the flavor of this dish. Green bell peppers bring in the mild bitterness people associate with stuffed peppers. (One green pepper plus two sweeter colors make a great balance.)
Then, choose your chop, because it changes the soup:
- Finely chopped would make this a kid-friendly dish. Small pieces soften into the base, blending nicely into the soup. Smaller pieces also brown faster, and help thicken the pot.
- ½-inch pieces give you more texture and heft. It’s a more traditional stuffed-pepper vibe, with distinct but tender bites of pepper.
Either way, keep the pieces uniform, so they cook evenly. Also, give the peppers enough time in the pot with the beef before any liquid goes in. Those browned edges are the difference between stuffed pepper soup and tomato soup.
What replaces the Worcestershire and brown sugar?
Worcestershire sauce isn’t Whole30 compatible, as it usually contains soy, added sugar, and often gluten. Two pantry ingredients take its place here. The first is coconut aminos (a soy sauce replacement) for savory-sweet depth. Then, we use Whole30-compatible fish sauce to provide the anchovy umami of Worcestershire. Together, the two provide a deep, savory flavor that ties the whole soup together.
Many versions of this soup also add brown sugar to help cut through the acidity of all of those tomatoes. However, sugar isn’t part of the Whole30 elimination phase either. In this Whole30 version, one or two finely-minced Medjool dates do the same job, melting into the broth. Mince them very fine, or mash them into a ladleful of hot broth first, so they dissolve instead of leaving chewy bits.
Start with one and taste before adding a second, as some canned tomatoes are much sharper than others. If yours are on the sweeter side, you can replace dates with 100% orange juice as a lighter touch, or skip it altogether if you prefer the bright acidity of the tomatoes.
What to look for on your labels
Most of these ingredients are naturally Whole30-compatible, but a few may add sugar or soy. Check these before you shop:
- Tomato sauce: Look for plain, unsweetened tomato sauce, not pasta sauce.
- Fish sauce: Many brands add sugar. Red Boat Fish Sauce is reliably compatible.
- Coconut aminos: You can find coconut aminos at most local grocers. Note that aminos are Whole30 compatible even if you see “coconut nectar” on the label. Skip flavored versions like Teriyaki, Garlic, or BBQ. Also note that Bragg Liquid Aminos are not compatible, as that produce is still soy-based.
- Ground beef: Fresh or frozen, both are delicious in this soup! Just look for plain ground beef, not pre-seasoned.
- Cauliflower rice: Use fresh or frozen here too, but look for plain cauliflower (nothing sauced or seasoned).
- Diced tomatoes and tomato paste: These are usually Whole30-compatible, but some brands may add sugar.
Red wine vinegar, Medjool dates, and Kettle & Fire Beef Bone Broth are compatible as-is. In fact, when you see the Whole30 Approved logo on any product, including a variety of Kettle & Fire broths, you’ll know it’s guaranteed compatible, no label-reading required!

Ingredients
For the beef base
- 1 Tbsp avocado oil or olive oil
- 1-1½ lbs ground beef 85/15 fat content
- 1 medium yellow onion diced (about 1½ cups)
- 2 large or 3 medium bell peppers about 3 cups, chopped uniformly (make sure 1 pepper is green)
- 5 cloves garlic minced
- 3 Tbsp tomato paste
For the seasoning
- 1 tsp table salt or fine sea salt plus more to taste
- 1½ tsp dried oregano
- 1 tsp dried basil
- 1 tsp smoked paprika
- 1 tsp onion powder
- ½ tsp garlic powder
- ½ tsp black pepper
- ¼ tsp red pepper flakes optional
- 1 bay leaf
For the broth
- 1 28 oz can diced tomatoes, with juice
- 1 15 oz can tomato sauce
- 4 cups Whole30 Approved® Kettle & Fire Beef Bone Broth
- 1 Tbsp coconut aminos
- 1½ tsp Red Boat fish sauce
- 1-2 pitted Medjool dates finely minced (or 2 Tbsp 100% orange juice)
To finish
- 3 cups cauliflower rice one 12 oz bag
- 1-2 tsp red wine vinegar or fresh lemon juice
- ¼ cup fresh basil chopped, plus more for serving
Instructions
- BROWN the beef. Heat the oil in a large pot over medium-high heat. Add the beef and press it into a flat layer. Let it sit undisturbed 3–4 minutes to brown before breaking it up, then cook 4–5 minutes more until no pink remains. Leave the fat in the pot — it carries flavor through the whole soup.
- COOK the peppers and onion. Add them right into the pot with the beef. Cook over medium-high, stirring occasionally, 5–8 minutes — closer to 5 for a fine chop, 8 for ½-inch pieces — until the onions are translucent and the peppers have a few browned edges. Don’t rush this.
- ADD the garlic, tomato paste, and spices. Reduce the heat to medium. Cook the garlic 30–45 seconds, until fragrant. Stir in the tomato paste and cook for 2 minutes, until it darkens to a deep brick red. Add all the seasonings and stir 30 seconds more.
- ADD the liquid. Pour in the diced tomatoes with their juice, the tomato sauce, and the bone broth, scraping the bottom to lift the browned bits. Stir in the coconut aminos, fish sauce, minced dates, and bay leaf.
- SIMMER uncovered. Bring to a boil over medium-high, stirring so the bottom doesn’t catch, then drop to medium-low and hold a steady simmer. Cook uncovered 20–25 minutes, scraping the bottom every 5 minutes or so, until the peppers are tender and the broth coats the back of a spoon. Leaving the lid off is what turns this from brothy to hearty.
- TASTE and adjust. Remove the bay leaf. Add salt a little at a time until the flavors come forward. If it still tastes sharp, add another half a date.
- STIR in the cauliflower rice. Simmer just 4–5 minutes, until barely tender — it keeps cooking in the hot pot, and overcooked cauliflower rice turns mushy and watery.
- FINISH and serve. Off the heat, stir in the vinegar and fresh basil. Taste once more for salt. Ladle into bowls and top with more basil.
Recipe notes:
- Salt more than feels right. If the soup tastes flat, it’s almost always from a lack of salt. Add ⅛ teaspoon at a time until the flavors snap into focus. Also, salt before you judge the acidity, since an under-salted pot and an over-acidic pot taste nearly identical.
- Add the vinegar at the very end. Acid added early in the process can cook off. A teaspoon stirred in when the dish comes off the heat makes the pot taste finished instead of heavy. If it already tastes sharp, use just ½ teaspoon, or skip it.
- Instant Pot: On Sauté high, brown the beef, cook the onion and peppers 5–6 minutes, then add the garlic, tomato paste, and spices (Steps 1–3). Deglaze with 1 cup of the broth, scraping the bottom clean. Add the remaining broth, coconut aminos, fish sauce, dates, and bay leaf, then pour both cans of tomatoes on top — do not stir. Pressure cook on High 5 minutes, quick release. Remove the bay leaf, turn Sauté back on, and bubble uncovered 8–10 minutes to thicken. Stir in the cauliflower rice, cook 3–4 minutes, and finish with vinegar and basil.
- Slow cooker: Brown the beef and cook the vegetables and spices on the stovetop first (Steps 1–3) — raw ground beef added straight to a slow cooker turns gray and bland. Transfer to the slow cooker with both cans of tomatoes, 3 cups broth, the coconut aminos, fish sauce, dates, and bay leaf. Cook LOW 6–7 hours or HIGH 3–4. In the last 20–30 minutes, remove the bay leaf and stir in the cauliflower rice, cooking on HIGH until just tender. Finish with vinegar and basil, and taste for salt.
- Use 1 to 1½ pounds of ground beef. One pound keeps the cost down and still eats like a full meal, since the bone broth carries protein of its own. A pound and a half gives you the richer version with more beef in every spoonful. Use the larger measurement if you’re making this for a crowd, or for leftovers that hold up as lunch.
- Storage: Refrigerate up to 5 days; the flavor improves overnight. The cauliflower rice keeps soaking up the broth, so add a splash of broth before reheating. Freeze up to 3 months; for the best texture, freeze before adding the cauliflower rice, then stir it in fresh when you reheat the dish.
Substitutions:
- Ground turkey or chicken in place of beef: Add an extra tablespoon of oil and another ½ tsp smoked paprika, and use Kettle & Fire Chicken Bone Broth.
- No fish sauce? Use 2 Tbsp coconut aminos and an extra ½ tsp smoked paprika. Fire-roasted diced tomatoes also add a lovely smokiness.
- For a heartier pot: Add 2 cups diced Yukon Gold potatoes with the broth and simmer 10–12 minutes until tender, before adding the tomatoes. (Acid slows the potatoes’ softening, so they need the head start.)
This post is sponsored by Kettle & Fire. Thank you for supporting our Whole30 Approved partners.





