Prep the leeks
Cut off the roots and the dark green tops of the leeks. Slice the remaining white and pale-green parts thinly, then put them in a bowl of cold water and agitate to loosen grit. Scoop the leeks out with your hands or a slotted spoon and pat dry. Dirt stays where it belongs — not in your soup.
Make the bouquet garni
Pile the bay leaves, sage sprigs, and thyme together and tie them with kitchen twine. If you don’t have twine, use a long parsley stem or tuck them into a small square of cheesecloth. This saves you from fishing twiggy bits out later.
Sauté the leeks
Heat 2 tbsp olive oil in the Dutch oven over medium-high heat until it shimmers. Add the leeks with a couple of pinches of salt and sauté 7–9 minutes until they soften and begin to brown. Stir now and then so they color evenly.
Add garlic, spice, and potatoes
Toss in the garlic and Aleppo pepper; cook 1–2 minutes until fragrant. Add the diced potatoes, the bouquet garni, ½ tsp kosher salt, cracked pepper to taste, and 4 cups vegetable broth. Bring to a boil.
Add beans and simmer
Add the rinsed cannellini beans, reduce heat to medium-low, cover, and simmer 20–25 minutes until the potatoes are tender. Stir a couple times so nothing sticks.
Blend for texture
Remove and discard the bouquet garni. Use an immersion blender to puree about half the soup, leaving some beans and potato chunks for texture. If you use a stand blender, transfer half the soup, blend (vent the lid with a towel), then return it to the pot. Do not blend everything — texture matters.
Finish with spinach & season
Stir in the chopped baby spinach, simmer 1–2 minutes until it wilts, then taste and adjust salt and pepper. Add more Aleppo or red chili if you want a little heat.
Make the herby oil & serve
Combine parsley, dill, lemon zest, grated garlic, flaky salt, and ¼ cup olive oil in a small jar. Shake until emulsified. Spoon the herby oil over each bowl just before serving. That bright, lemony drizzle turns this from “nice” to “wow.”