Sauté the aromatics : Start by heating the olive oil in a large, heavy-bottomed pot over medium heat. Once the oil is shimmering, add the diced onion and cook for about 5 minutes, stirring occasionally, until it becomes soft and translucent. This step lays the flavor foundation, so don’t rush it!
Add garlic and spices : Next, toss in the minced garlic, dried oregano, smoked paprika, and optional chili flakes. Stir constantly for about 1 minute, just until the garlic is fragrant and the spices bloom. This quick step adds warmth and depth to the base of your stew.
Build the base : Pour in the crushed tomatoes and vegetable broth. Stir well to combine, scraping up any bits from the bottom of the pot. Bring the mixture to a gentle simmer and let it bubble for about 5 minutes. This allows the tomato flavor to mellow and blend with the aromatics.
Add the beans : Now it’s time for the white beans. Drain and rinse them, then stir them into the pot. Let everything simmer together for another 10 minutes. The beans soak up all those rich flavors and begin to soften even more, creating that hearty stew texture.
Stir in the creaminess : Reduce the heat to low and gently pour in your plant-based milk—coconut milk for richness or oat milk for a lighter version. Stir to combine and let the stew simmer for 5–10 more minutes. This is where the magic happens: the broth thickens slightly, the beans get creamier, and the tomato base turns velvety.
Season to taste : Before serving, taste and adjust the seasoning with salt and pepper. Depending on your broth and tomatoes, you may need more salt than expected.
Garnish and serve : Ladle the stew into bowls and top with fresh basil or parsley. Serve with crusty bread or over a bed of rice or quinoa for a complete, cozy meal.