Keto Beef & Tomato Soup
Published March 10, 2025 • Updated March 7, 2026
This post may contain affiliate links. See my disclosure policy.
This creamy keto beef tomato soup is loaded with ground beef, a rich tomato base, and low-carb lupini noodles. I make a big pot of this every week when the weather turns cold.
I started making this keto beef tomato soup last winter when I wanted something warm and filling but didn’t want to blow my carbs on a regular noodle soup. What I ended up with is this creamy, beefy tomato soup that hits somewhere between a classic tomato soup and a lasagna soup (just less cheesy). I’ve made it probably 30 times since then, and I keep coming back to it.

The ground beef gives it real body. I brown it with diced onion until everything is soft and starting to caramelize a little, then build the soup right in the same pot. Crushed tomatoes, tomato sauce, chicken broth, and a pinch of dried basil and oregano. The whole thing comes together in about 25 minutes. If you want a low carb soup that actually feels like a full meal, this is it.
Instead of regular pasta, I use lupini noodles. I’ve tested a lot of keto noodle options over the years and lupini is still my favorite for soups. They hold their shape, they don’t get mushy, and they add 14g of protein per serving on top of the beef. One thing I learned the hard way: rinse the lupini pasta for at least 3 minutes under running water before adding it. The brine leaves a sharp sour note if you rush it. I taste one noodle to make sure it’s clean before it goes in the pot. If you’re more of a regular pasta person, try my keto spaghetti instead.
The creamy part comes from cream cheese stirred in at the end. I cube it small (about half-inch pieces) so it melts fast. A little sugar-free brown sugar substitute balances out the acidity from the tomatoes, and you get this rich, velvety broth that coats the noodles perfectly. My family requests this on cold nights. Reader Amy’s husband, who never compliments food, asked to make it weekly after his first bowl.
I’ve also tried roasting the tomatoes before adding them to the pot, and it does deepen the flavor if you have the extra 20 minutes. Halve a can’s worth of whole tomatoes, roast at 400F for 15-20 minutes, and use those in place of the crushed tomatoes. Not necessary, but a nice upgrade when I’m not rushing.
This works as meal prep too. I portion it into containers for work lunches and the flavors actually get better overnight. If you like hearty, beefy soups, try my keto minestrone. For other easy ground beef dinners, my keto hamburger helper and keto beef and broccoli are both in regular rotation at my house.
How to get this soup under 15g net carbs
The full recipe comes in at 23 grams of net carbs, which I know is higher than some people want. I’ve played around with lowering the carbs and here’s what works without killing the flavor. With these tweaks, I get it down to only 12 grams of net carbs per serving.
- Omit the onion – The yellow onion adds almost 1 gram carb per serving. I’ve made it without the onion plenty of times and the soup is still good.
- Decrease the crushed tomatoes – Instead of one 28-oz can, use half a can. This saves you around 5 net carbs per serving and the soup is still plenty tomatoey.
- Omit or decrease the tomato sauce – Cutting the tomato sauce saves about 6 net carbs per serving. I usually cut it in half rather than skipping it completely.
Explore hundreds of keto recipe videos with step-by-step instructions, tips, and tricks to make keto easy.
Ingredients
1 1/2 lb lean ground beef
1/2 medium yellow onion, diced
1 tablespoon dried basil
1 teaspoon dried oregano leaves
1 teaspoon garlic powder
6 cups chicken broth
28 oz can crushed tomatoes
15 oz can tomato sauce
1 teaspoon brown sugar substitute, optional
8 oz lupini pasta
8 oz cream cheese, softened and cubed
Step by Step Instructions
Step by Step Instructions
Brown the ground beef
Heat a large pot or dutch oven over medium heat, add ground beef, onion and a pinch of salt and pepper. Cook for 4-5 minutes, breaking the meat in small pieces, until it’s no longer pink and the onions are translucent. Drain any excess grease if desired.
- 1 1/2 lb lean ground beef
- 1/2 medium yellow onion, diced
It's not tomato soup without tomatoes
Stir in the basil, oregano, garlic powder, chicken broth, crushed tomatoes, tomato sauce, and brown sugar substitute (if using). Bring to a simmer and add noodles. Simmer until the pasta is just al dente (about 4-6 minutes).
- 1 tablespoon dried basil
- 1 teaspoon dried oregano leaves
- 1 teaspoon garlic powder
- 6 cups chicken broth
- 28 oz can crushed tomatoes
- 15 oz can tomato sauce
- 1 teaspoon brown sugar substitute (optional)
- 8 oz lupini noodles
Make it creamy
Remove from the heat. Add the cubed cream cheese and stir until cream cheese is melted and incorporated. To serve, top with parmesan cheese and fresh basil if desired.
- 8 oz cream cheese, softened and cubed
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 →Frequently Asked Questions
Can I use ground turkey or chicken instead of beef?
I've made this with ground turkey and it works, but the flavor is noticeably lighter. What I do when I use turkey is add an extra tablespoon of tomato paste and a little more salt to make up for the richness you lose from the beef fat. Ground chicken is even milder, so I'd stick with turkey if you're swapping.
I'm out of cream cheese, what could I use as a substitute?
I've subbed in 1/4 to 1/2 cup of heavy cream and it works well. The soup is a little thinner but still creamy. I've also blended cottage cheese smooth and stirred it in at the end. Plain greek yogurt works too, but I add it off the heat so it doesn't curdle.
Can I make this in a slow cooker or Instant Pot?
I've done both. For the slow cooker, I brown the beef and onion on the stove first, then dump everything except the noodles and cream cheese into the slow cooker on low for 4-6 hours. I add the noodles in the last 15 minutes and stir in the cream cheese at the end. For the Instant Pot, I use the saute function to brown the beef, add the broth and tomatoes, pressure cook on high for 5 minutes, quick release, then stir in the noodles and cream cheese. My beef tips and noodles is another one that works great in the Instant Pot.
How long should I rinse lupini noodles before adding them?
I rinse mine for at least 3 minutes under running water, and I taste one before adding them to the pot. The first time I made this, I barely rinsed the noodles and there was this sharp sour note I couldn't place. Turned out that's just the lupini brine being stubborn. Reader Brett had the exact same experience and now rinses for a full 3 minutes too. Once the brine is gone, the noodles taste completely neutral and soak up the broth flavor.
Can I freeze this soup with cream cheese already added?
I've tried it both ways. When I freeze it with cream cheese already in, the texture gets grainy when I reheat. My workaround is to freeze the soup before the cream cheese step, then stir in fresh cream cheese when I reheat. Takes an extra minute and the texture is way better.
Can I make this dairy-free?
I've made a dairy-free version using full-fat coconut cream instead of cream cheese. I stir in about 1/3 cup at the end, and it gives a similar richness without the tang. The soup is a little thinner, so I let it simmer an extra 5 minutes before adding the coconut cream to reduce the broth slightly. Dairy-free cream cheese works too, though I've found coconut cream blends more smoothly into the hot broth.
Can I use Italian sausage instead of ground beef?
I've done this and it makes a completely different (and really good) soup. I use mild Italian sausage, remove the casings, and crumble it the same way I do the beef. The fennel and herbs in the sausage add so much flavor that I skip the dried basil entirely. Everything else stays the same. If you like that direction, my stuffed Italian sausage is another favorite.
How do I keep the soup from being too acidic?
I use a tablespoon of sugar-free brown sugar substitute, and that does the trick for me. The cream cheese also mellows the acidity a lot. If it's still too tangy for your taste, I'd add another half tablespoon of the sweetener rather than more cream cheese, which can make it too thick.

Ran this soup through a weeknight test after a long stretch of not finding a keto beef soup worth making twice. The garlic powder and basil balance is right. Crushed tomatoes give it body that a lot of lighter soups skip, and the seasoning doesn't need heat to carry it. One note: the recipe calls for chicken broth, and it works, but beef stock is noticeably better. Chicken broth is too neutral for all that ground beef. Beef stock pulls everything together. I'd keep everything else exactly as written. Glad I stumbled on this one.
Beef stock is the right call. I default to chicken broth because it's what I always have, but the beef stock version has more depth with all that ground beef in there.
There's a beef and tomato soup my mom made every fall that I'd completely written off going keto. The cream cheese melted into the broth gives it this depth I genuinely thought I'd never have again. Texted her the recipe the second I finished the bowl.
That last line is the whole point of cooking. Cream cheese into broth sounds odd but it doesn't just add richness, it pulls the acidity back in a way nothing else does.
Wasn't sure lupini pasta would hold up in soup but it doesn't go mushy like zucchini noodles. The cream cheese finish did something I wasn't expecting. This replaced my old standby.
Lupini was the unlock for me too. The cream cheese step surprises people because it's not just richness, it actually mellows the tomato base.
If you're using lupini pasta for the first time, rinse it way more than you think you need to (like three or four times). I skipped one of the rinses once and there was a bitterness that threw off the whole soup. Once I started doing it properly, the balance came together exactly like it should.
The bitterness is no joke. I taste one straight from the rinse water before adding them to the pot, and if it's still sharp I run them again. Three rinses is usually my baseline too.
Made this last week and oh my gosh it smelled incredible while it was cooking, but when I added the cream cheese at the end I must have done something wrong because I had these little chunks floating around no matter how much I stirred (I even tried using a whisk at one point). I think I pulled it straight from the fridge which was probably my mistake. The soup had already come off the heat so maybe it wasn't hot enough to melt it all the way, or maybe I should have cubed it smaller than I did. I still ate two bowls because the flavor with the tomatoes and basil was so good, but I really want to nail that smooth texture next time. Do I need to add the cream cheese while it's still on the burner, or is the real fix just making sure it's room temp before it goes in?
Room temp does most of the work, yeah. You can also flip the burner back on low for a minute after stirring it in. Just don't let it boil or it gets grainy.
I was nervous about lupini noodles because I had never cooked with them before, but they held up way better than I expected in all that tomato broth. The cream cheese at the end is such a good move. Already planning a double batch for next week.
Double batch is the right call. This one's better the next day once the broth settles.
Four batches in and that cream cheese at the end is the only reason this doesn't taste like canned soup.
Yeah, four batches is when you stop second-guessing it. And the cream cheese isn't just for richness, the tang cuts the acidity from the tomatoes in a way heavy cream won't.
Tried probably four different keto beef soups this winter. This is the one I'm keeping. The cream cheese stirred in at the end is what the others were missing, makes it rich without getting heavy. Might bump the seasoning next time but the lupini noodles were a total find.
Kept skipping this because I couldn't picture lupini noodles in something that wasn't trying to be pasta. Made it this week. Texture held in the broth, which I can't say for most keto noodle swaps. First keto soup where I forgot I was compensating.
Lupini stay firm in broth. That last line is what I was going for with this one.
Learned after my second pot: cube the cream cheese smaller than you think, maybe half-inch pieces. It melts into the broth smoothly without leaving white pockets you have to stir out. This is my cold-weather staple now.
Good call on the size. I also pull mine out 15 minutes before to soften. Cold cream cheese right out of the fridge takes forever to break down.
I had my doubts about lupini pasta in a tomato broth soup, mostly because every other keto noodle I've tried turns to mush by day two. These held up. The cream cheese swirled in at the end is what ties it all together.
That cream cheese swirl is non-negotiable. Heavy cream gets close but it doesn't have the same body in a tomato broth.
I'd never cooked with lupini noodles before and was a little nervous about it, but they held up really well in the broth. The cream cheese stirred in at the end gave the whole pot this unexpected richness that made it feel like something I've been making for years.
That 'felt like I've been making it for years' is exactly what cream cheese does to a tomato broth. Stirred in at the end wasn't the original plan, but now it's non-negotiable.
My mom used to make a tomato beef soup every winter that I thought I'd lost on keto. Made this last week and barely got four spoonfuls in before I had to text her a photo. The cream cheese at the end does something almost identical to what she got from heavy cream, which I didn't think was possible. Still not sure how Annie figured that out, but I've been thinking about it all week.
Four spoonfuls before texting her. I hadn't thought about it that way until you said it, but the tang from the cream cheese is doing something the heavy cream can't. Glad this one held up.
I almost skipped this because I had no idea what lupini noodles were and wasn't sure they'd be worth tracking down. Ended up finding them at Whole Foods, made the soup, and now I understand the appeal. The cream cheese step seemed weird to me going in, but it melts right in and gives the broth this body that most tomato soups don't have. Been making different keto soups all winter and this is the first one that actually felt complete.
Whole Foods is the easiest spot for lupini pasta once you find the section. That 'felt complete' reaction is exactly what I'm going for with this one.
I'm not a cook, like at all. Had a pound and a half of ground beef to use up and figured I'd give this a shot. I was skeptical when the recipe said to stir cream cheese straight into hot broth, but it just melted right in and turned everything creamy and thick. Made myself a big bowl and sat there kind of in disbelief that I pulled this off. More on the way this weekend.
Ha, that bowl. Now you've got a pound and a half recipe locked in. More on the way is the right call.