Sauté the aromatics: Heat butter or olive oil in a medium pot over medium heat. Add the diced onion and cook 4–5 minutes, until softened and translucent.
Stir in the garlic and cook 30 seconds, just until fragrant.
2 tablespoons butter or olive oil, 1 small yellow onion, diced, 3 cloves garlic, minced
Add tomatoes and seasoning: Pour in the diced tomatoes with their juices and the broth. Stir in oregano, red pepper flakes (if using), salt, and pepper. Bring to a gentle simmer.
2 (14.5-ounce) cans diced tomatoes, preferably fire-roasted, 1 cup low-sodium chicken or vegetable broth, 1/2 teaspoon dried oregano, 1/4 teaspoon red pepper flakes (optional, for a gentle kick), 1 teaspoon sea salt, more to taste, 1/2 teaspoon freshly ground black pepper
Simmer to meld flavors: Let the soup simmer uncovered for 10–12 minutes, stirring occasionally.
This reduces some liquid and concentrates the tomato flavor.
Blend until smooth: Turn off the heat. Add the fresh basil leaves. Use an immersion blender to blend the soup right in the pot until silky.
If using a countertop blender, carefully blend in batches and return to the pot.
1/2 cup fresh basil leaves, loosely packed, plus extra for garnish
Make it creamy: Return the pot to low heat. Add the cream cheese and whisk until it melts and fully incorporates. Stir in the heavy cream.
3 ounces cream cheese, softened and cubed, 1/2 cup heavy cream
Balance the acidity: Taste the soup.
If it’s too tangy, stir in 1–2 teaspoons of keto-friendly sweetener until balanced. Adjust salt and pepper as needed.
Serve: Ladle into bowls and garnish with extra basil and Parmesan if you like. Serve hot.
1 handful Freshly grated Parmesan, for serving (optional)