Canned tomatoes, a handful of basil, and about 30 minutes standing between you and a bowl of soup that tastes like it took all afternoon. That's the deal here.
Why You'll Love This Recipe
No roux, no flour, no weird thickeners — this soup gets its body from heavy cream and a slow simmer that concentrates the tomato flavor down to something genuinely rich. It's one of those recipes that looks impressive but asks almost nothing from you.
The keto angle isn't a compromise either. Tomato basil soup was basically already low-carb — you're just swapping out the bread bowl and calling it a win.
Ingredients
- 2 cans (28 oz each) whole peeled San Marzano tomatoes
- 1 medium yellow onion, roughly chopped
- 5 cloves garlic, smashed
- 3 tbsp butter (unsalted)
- 1 cup heavy cream
- 1½ cups chicken broth (or vegetable if you're going that route)
- ¼ cup fresh basil leaves, packed (plus more for serving — don't skip this part)
- 1 tsp dried oregano
- ½ tsp red pepper flakes (optional, but recommended)
- Salt and black pepper to taste
- 2 tbsp olive oil
- ¼ cup grated Parmesan (or whatever hard cheese is expiring in your fridge)
How to Make It
1. Sweat the aromatics. Heat olive oil and butter together in a large heavy-bottomed pot over medium heat. Add the onion and cook for 6–7 minutes until softened and translucent. Add the garlic and cook another 2 minutes. Don't rush this step — undercooked onion makes the whole soup taste raw and sharp.
2. Add tomatoes and broth. Pour in both cans of tomatoes, crushing them with your hands as they go in or breaking them up with a wooden spoon. Add the chicken broth, oregano, red pepper flakes, salt, and pepper. Stir everything together and bring to a simmer.
3. Simmer it down. Let the soup simmer uncovered for 20–25 minutes, stirring occasionally. You want it to reduce slightly and for the tomatoes to fully break down. This is where the flavor builds — don't cut it short because you're hungry.
4. Blend it. Take the pot off the heat and add the fresh basil. Use an immersion blender directly in the pot and blend until completely smooth. If you're using a standing blender, work in batches and hold a towel over the lid — hot soup expands and that lid will launch if you let it.
5. Finish with cream. Return the pot to low heat. Stir in the heavy cream and let it warm through for 3–4 minutes — don't boil it at this stage. Taste, adjust seasoning, and top with extra basil and Parmesan before serving.
Mistakes to Avoid
Using fresh tomatoes instead of canned. Out-of-season fresh tomatoes are watery and bland. Canned San Marzanos are picked at peak ripeness and will out-perform most fresh tomatoes you'll find at a regular grocery store.
Adding the cream too early. If you add it before blending or while the soup is still at a hard boil, it can separate and turn grainy. Low and slow at the end only.
Under-seasoning before you blend. Blending dilutes your ability to taste-test accurately. Season more aggressively going in than you think you need to — you can always add, but you can't take back.
Skipping the butter. Olive oil alone works, but the butter adds a richness to the base that carries through the whole soup. This is not a place to trim fat — literally or figuratively.
Easy Swaps & Substitutions
Heavy cream → coconut cream. Works surprisingly well if you're dairy-free. It adds a very subtle sweetness, which actually plays nicely with tomato. Full-fat only — the light version is mostly water.
Chicken broth → vegetable broth. Straightforward swap, no flavor loss worth complaining about.
Fresh basil → dried basil. Last resort, and use about a third of the amount. Dried basil added at the end tastes dusty — if you go this route, add it with the oregano during the simmer instead.
Parmesan → nutritional yeast. TBH, it's not the same, but it gives you that savory umami finish if you're avoiding dairy entirely. Start with 2 tbsp.
FAQ
Can I make this ahead of time? Yes, and it actually gets better the next day. Store it without the cream, then stir the cream in when you reheat. That way it stays smooth and doesn't separate in the fridge.
How do I store leftovers? Airtight container in the fridge for up to 4 days. It also freezes well for up to 3 months — again, freeze before adding the cream if you're planning that far ahead.
Is this actually filling enough for a meal? Pair it with a simple salad or some keto bread, and yes. On its own, it's more of a substantial starter. Depends on your appetite.
Can I use an Instant Pot? Sauté the aromatics on the sauté setting, add everything except the cream and basil, and pressure cook on high for 10 minutes. Quick release, then blend and finish with cream on the sauté setting. Works well.
What can I serve this with on keto? Grilled cheese made with low-carb bread is the obvious answer. A cheese quesadilla on a keto tortilla also holds up. Or just eat it with a spoon and don't overthink it.
My soup tastes too acidic — what happened? Probably your tomatoes. Add a pinch of baking soda (start with ¼ tsp) and stir — it neutralizes acidity fast. A small pat of extra butter also helps round it out.
Final Thoughts
This soup is proof that low-carb cooking doesn't require a culinary degree or a pantry full of specialty ingredients. Make a double batch — it disappears faster than you'd expect. Serve it with something to scoop it up, sit down, and actually enjoy your dinner for once.
Is the Keto Diet Right For You?
Get Your FREE Personalized Keto Diet Plan in 2 Minutes
🎯 Custom Meal Plans • ⚡ Instant Results • 🔒 Risk-Free
🎯 Get Your Complete Keto Plan Now
Start burning fat with a plan designed specifically for YOUR body and lifestyle
Keto Resources I Actually Recommend
I only share things I've vetted. These can genuinely move the needle for you.
Keto Breads
Delicious low-carb bread recipes so you never have to miss sandwiches, toast, or fresh-baked rolls again.
Keto Desserts
Satisfy your sweet tooth without blowing your macros — cakes, cookies, brownies, and more, all keto-friendly.
The Instant Pot Keto Solution
Quick, hands-off keto meals using your Instant Pot — perfect for busy weeknights when cooking feels like a chore.
