Rich vegan tomato soup infused with ginger and coconut milk topped with crunchy cashews and crispy shallots.
In Austin, tomato soup is usually synonymous with a rainy day and a grilled cheese sandwich. However, this recipe takes that nostalgic template and pushes it in a warmer, Southeast Asian direction. Instead of heavy cream and basil, we use full-fat coconut milk, fresh ginger, and aromatic Thai basil. It is a soup that balances the natural acidity of San Marzano tomatoes with the earthy sweetness of coconut. But the real star here isn't even the soup itself-it is the toppings. The homemade crispy shallots and toasted cashews provide a savory, salty crunch that completely transforms the eating experience from a simple sippable lunch into a textural masterpiece.
The frying of the shallots is the most delicate step in this entire recipe. You must pull the shallots from the oil the moment they turn a light golden brown. If you wait until they look "done" in the pan, they will burn while cooling on the paper towel due to residual heat, turning bitter. Better to pull them too early than too late.
A Thai-Inspired Twist on Classic Comfort

Why You'll Love This Recipe
- Dairy-Free Creaminess: Thanks to the full-fat coconut milk, this soup achieves a velvety, luxurious texture without a drop of heavy cream.
- Texture Overload: The contrast between the smooth, pureed soup and the shattering crunch of the fried shallots and toasted cashews is addictive.
- Flavor Depth: The addition of fresh ginger and Thai basil lifts the flat flavor of canned tomatoes into something bright and aromatic.
- Zero Waste Garnish: The oil used to fry the shallots becomes infused with onion flavor, which is then drizzled over the finished soup for an extra layer of savory depth.
Ingredients
Quality canned goods make this soup possible year-round, but fresh aromatics are non-negotiable.
- San Marzano Tomatoes: One 28-ounce can. Using whole peeled San Marzano tomatoes ensures a sweeter, less acidic base than standard diced tomatoes.
- Coconut Milk: One 13.5-ounce can of full-fat, unsweetened coconut milk. Do not use "lite" milk or the carton beverage type; you need the fat for texture.
- Aromatics: 1 large onion, 5 cloves of garlic, and a 1-inch piece of fresh ginger. The ginger provides the signature heat.
- Coconut Oil: Used for sautéing the soup base and frying the shallots.
- Shallots: 2 bulbs, thinly sliced for the crispy topping.
- Cashews: 1 cup, roughly crushed. These add a buttery crunch.
- Thai Basil: Fresh sprigs. Thai basil has a licorice/anise note that pairs better with coconut than sweet Italian basil.
- Water: 28 ounces (you will use the empty tomato can to measure this).
How to Make Creamy Coconut Tomato Soup

Toast the Cashews
Preheat your oven to 375°F. Line a baking sheet with parchment paper. In a small bowl, toss the crushed cashews with 1 tablespoon of melted coconut oil, salt, and pepper. Spread them evenly on the baking sheet. Bake for 5 to 8 minutes. Watch them closely, as nuts burn quickly. Remove and let cool.
Fry the Crispy Shallots
Line a plate with paper towels. In a small skillet or saucepan, heat ½ cup of coconut oil over medium heat. Add the sliced shallots. Fry them, stirring constantly to ensure even cooking, for about 8 to 10 minutes. When they turn a pale golden color, remove them immediately with a slotted spoon and drain on the paper towels. Sprinkle with salt immediately. Reserve the frying oil-this is now "shallot oil."
Sauté the Soup Base
In a large pot or Dutch oven, heat 2 tablespoons of coconut oil over medium-high heat. Add the chopped onion and a generous pinch of salt. Sauté for about 10 minutes until the onions are caramelized and browned. Add the minced garlic and ginger. Cook for another 2 to 3 minutes until fragrant.
Simmer
Add the can of whole tomatoes (crush them by hand as you drop them in) and the can of coconut milk (reserve 4 tablespoons for garnishing later). Fill the empty tomato can with water (28 oz) and pour that into the pot. Bring the mixture to a boil, then reduce heat to low. Cover and simmer for 30 minutes to marry the flavors.
Blend and Season
Using an immersion blender, blend the soup directly in the pot until completely smooth and creamy. If using a standard blender, work in batches and vent the lid to prevent steam explosions. Taste the soup. Season generously with salt and pepper.
Assemble
Ladle the hot soup into bowls. Drizzle with the reserved plain coconut milk and the reserved shallot-infused oil. Top generously with the toasted cashews, crispy shallots, and fresh Thai basil.
Common Mistakes to Avoid
- Burning the Shallots: High heat is the enemy of crispy shallots. Keep the heat medium-low and stir constantly. If they turn dark brown in the pan, they will taste acrid.
- Using Sweetened Coconut Milk: Always double-check your can. Cream of Coconut (used for cocktails) is loaded with sugar and will ruin this savory soup.
- Undercooking Onions: The caramelized onions provide the savory backbone. If you rush this step, the soup will lack depth. Give them the full 10 minutes.
Tips and Tricks for Success
- Hand Crushing Tomatoes: Squeezing the whole tomatoes by hand before adding them to the pot releases their juices and makes blending easier later. (Wear an apron!)
- The Ginger: Peel your ginger easily using the edge of a spoon. Grating it on a microplane ensures you don't have fibrous chunks in your soup.
- Serving Temperature: Let the soup cool slightly before serving. If it is boiling hot, you miss the subtle nuances of the coconut and ginger.
Variations
- Spicy Red Curry: Add 1 tablespoon of red Thai curry paste during the sauté step with the garlic and ginger for a significant heat upgrade.
- Protein Boost: Poach shrimp in the broth during the last 5 minutes of simmering, or top with seared tofu cubes.
- Nut Substitute: If you have a nut allergy, swap the cashews for toasted pumpkin seeds (pepitas) or sunflower seeds.
How to Serve
This soup is rich enough to be a meal, especially with the heavy cashew topping. It pairs beautifully with naan bread or a scoop of jasmine rice stirred directly into the bowl.

Make Ahead and Storage
- Storage: Store the soup in an airtight container in the refrigerator for up to 5 days. Store the crispy shallots and cashews in a separate dry container at room temperature to maintain their crunch.
- Freezing: This soup freezes well for up to 3 months. The coconut milk may separate slightly upon thawing; just blend it briefly with the immersion blender while reheating to re-emulsify.
- Reheating: Reheat gently on the stove. Do not let it boil aggressively, or the coconut fat may separate.
Recipe Notes / What I Learned
During testing, I found that the 28 ounces of water might seem like a lot of liquid, but it reduces during the simmer, and the cashews added at the end soak up some of the liquid on the spoon, creating a perfect consistency.
Nutrition Snapshot
One bowl (without heavy toppings) contains approximately 280 calories, 22g fat, and 18g carbohydrates. With full toppings, calories increase to ~450.

Tomato Soup
Equipment
- 1 Oven
- 1 Baking sheet with parchment paper
- 1 Small pan for shallots
- 1 Large pot
- 1 Immersion blender or blender
Ingredients
Group: Cashews + Crispy Shallots
- 1 cup cashews, roughly crushed or chopped
- 2 shallots, thinly sliced
- ½ cup coconut oil, melted, divided
- salt to taste
Group: Tomato Soup Base
- 2 tablespoons coconut oil
- 1 large onion, finely chopped
- 1 inch ginger, peeled and minced
- 5 cloves garlic, minced
- 28 oz canned whole tomatoes, crushed by hand (San Marzano tomatoes recommended)
- 13.5 oz full-fat unsweetened coconut milk (400ml) - reserve 4 tablespoons for drizzling on top when serving
- 28 oz water using the San Marzano tomato can
Group: Garnishes
- Thai basil sprigs or roughly chopped
- shallot infused coconut oil from frying shallots
- salt and pepper to taste
Instructions
- Preheat your oven to 375 degrees. Line a baking sheet with parchment paper. Toss the cashews in 1 tablespoon coconut oil and season with salt and pepper. Place the cashews evenly on the parchment paper lined baking sheet and place in the oven for about 5-8 minutes. Once toasted, remove from the oven and let cool on the baking sheet.
- Prepare a plate or tray with paper towels and set aside. In a small pan, pour your remaining ½ cup oil and heat on medium. Saute the shallots in the oil, constantly stirring, about 8-10 minutes. You may need to fry them in batches. With a slotted spoon, remove from heat once you see a slight browning and then put them on your paper towel lined plate or tray. Sprinkle immediately with salt and let cool while you prepare the soup. Reserve the shallot/coconut oil for garnishing.
- In a large pot, heat your 2 tablespoons coconut oil on medium-high heat and saute your onions with a generous pinch of salt until caramelized and brown, around 10 minutes. Next, add the garlic and ginger and saute until fragrant, about 2-3 minutes. Add the tomatoes, coconut milk, and water. Bring to a boil, lower the heat to a simmer and cover, cooking for about 30 minutes. Once finished, using an immersion blender or blender, blend the soup until it's smooth and creamy. Adjust with salt and pepper to taste.
- Ladle the soup into bowls, drizzle 1 tablespoon of coconut milk per bowl if using (from the reserved 4 Tbsp.), shallot infused coconut oil, sprinkle with the toasted cashews, crispy shallots, and sprigs or roughly chopped Thai basil. Add salt and pepper to taste. Enjoy!
Notes
Nutrition
FAQs
Can I use regular basil?
Yes, but the flavor profile will shift from Thai-fusion to a more standard tomato-basil profile. If using Italian basil, consider omitting the ginger.
Is this soup keto-friendly?
The soup base is relatively low-carb and high-fat due to the coconut oil and milk, making it suitable for many keto diets, though cashews add some carbs.
Can I use powdered ginger?
I do not recommend it. Fresh ginger provides a zesty heat that powder lacks. If you must, use ¼ teaspoon ground ginger, but the result will be flatter.




