Sauté the onion, carrots, celery, and garlic with oil in a pot over medium heat, until softened and starting to brown (about 10 minutes).: Close your eyes briefly and inhale, the pan should smell sweet and savory, a little caramelized when the edges of the onion and carrots begin to brown. You will hear a soft gentle sizzle as the vegetables release moisture, and the sound will quiet as they soften. This step builds foundational flavor through Maillard reactions, it is why the final soup tastes rich even without heavy cream. Stir every minute to keep the vegetables from sticking, and lower the heat if you notice any charring because burnt bits will turn bitter. A common mistake is rushing this stage with high heat, which prevents proper softening and robs the soup of depth.
Add the beans, broth, salt, and pepper (sometimes the broth is salty enough, so add as needed). Bring it to a boil, reduce the heat to medium-low, and cook for about 30 minutes.: You will see the pot come alive as bubbles rise and the aroma expands, with the earthy scent of the beans mingling with the sautéed vegetables. Letting it simmer gently allows the flavors to marry and the vegetables to become completely tender. The simmer should be steady but not violent, small rolling bubbles are perfect. This technique softens any remaining texture differences and helps the beans absorb the broth. Avoid rapid boiling which can break down ingredients too aggressively and make the soup cloudy in an uneven way.
In the meantime, toss the bread into the skillet, drizzle it with oil, sprinkle it with some salt, and toast it over medium heat until nicely browned and crunchy.: As the bread toasts you will hear a crisp crackle and smell a nutty toasty aroma that complements the soup beautifully. The golden brown color is the cue that the croutons are ready, and they should feel firm and crunchy when tapped. This contrast in texture is crucial, it keeps each spoonful from being uniformly smooth. Watch closely because bread can go from golden to burnt quickly, losing its pleasant flavor.
Add the dill and parsley to the soup and then remove the pot from the heat. Purée with an immersion blender until smooth.: When the herbs hit the warm pot the aroma will brighten immediately, a fresh herbal lift that signals readiness. Removing the pot from the heat before pureeing prevents steam from building and splashing, making the process safer. As you press the immersion blender, watch the liquid turn glossy and silky, and listen for a steady motor hum that indicates efficient blending. Over-blending can make the texture overly gluey, so pulse and check frequently to achieve a balanced velvety body.
Return the soup to the heat, add the coconut milk, stir, and bring it to a gentle simmer. Turn off the heat.: Adding the optional full fat coconut milk introduces a creamy sheen and a faint sweet coconut aroma, and a gentle simmer helps it integrate without separating. You will notice the surface become slightly glossy and the mouthfeel soften. Keep the heat low because vigorous boiling can cause the coconut milk to split and the texture to become grainy. If that happens, lower the heat and whisk gently to bring it back together.
To serve this bean soup, pour it into a bowl, drizzle with coconut milk, and add some croutons and chopped parsley on top.: The final presentation should look inviting, with a drizzle of coconut milk creating a pale swirl and crunchy croutons sitting on top for contrast. As you lift the spoon, the aroma of herbs and toasted bread should greet you first, followed by the smooth creamy texture on the palate. Serve while hot, because cooling changes the mouthfeel and flavor intensity. A common oversight is waiting too long to serve, which dulls the aromas and softens the croutons, so garnish just before serving.