Directions
<ol class="no-list-style"><li class="MethodStepper"><h4 class="step-title">Step 1</h4>Heat the olive oil in your Dutch oven over medium heat until it shimmers. Add the diced onion, carrot, and celery (the Italian "soffritto" that forms the flavor foundation of many dishes). Sauté for 8-10 minutes until the vegetables have softened but not browned. This slow cooking process develops a sweet, aromatic base for your soup.</li><li class="MethodStepper"><h4 class="step-title">Step 2</h4>Add the minced garlic, rosemary, and thyme to the pot. Stir continuously for 1-2 minutes until fragrant, being careful not to let the garlic brown or it will become bitter.</li><li class="MethodStepper"><h4 class="step-title">Step 3</h4>Pour in the vegetable stock and add the bay leaves and Parmesan rind if using. The Parmesan rind will slowly melt into the soup, adding incredible depth of flavor and a subtle umami richness. Bring the mixture to a gentle boil, then reduce to a simmer.</li><li class="MethodStepper"><h4 class="step-title">Step 4</h4>Add about two-thirds of the cannellini beans to the pot. Reserve the remaining beans for later. Season with salt and freshly ground black pepper to taste, remembering that the Parmesan will add saltiness later.</li><li class="MethodStepper"><h4 class="step-title">Step 5</h4>Simmer the soup uncovered for 20-25 minutes, allowing the flavors to meld and the beans to soften further. The starch from the beans will naturally begin to thicken the broth.</li><li class="MethodStepper"><h4 class="step-title">Step 6</h4>Remove the bay leaves and Parmesan rind. Using an immersion blender, partially blend the soup until about half is puréed but plenty of texture remains. This creates a luxuriously creamy base while maintaining rustic character. If you don't have an immersion blender, transfer about half the soup to a standard blender, purée, and return to the pot.</li><li class="MethodStepper"><h4 class="step-title">Step 7</h4>Add the remaining whole beans and the chopped kale or spinach to the pot. The residual heat will cook the greens while maintaining their vibrant color. Simmer for an additional 5 minutes until the greens are tender.</li><li class="MethodStepper"><h4 class="step-title">Step 8</h4>Taste and adjust seasoning as needed. The soup should be rich and flavorful, with a velvety texture from the puréed beans contrasting with the whole beans and vegetables.</li><li class="MethodStepper"><h4 class="step-title">Step 9</h4>Serve the soup hot in warmed bowls. Drizzle each serving with a generous amount of extra virgin olive oil, which will create beautiful golden pools on the surface and add a fruity finish. Sprinkle with grated Parmesan and serve with chunks of crusty bread for dipping.</li><li class="MethodStepper"><h4 class="step-title">Step 10</h4>For the best flavor experience, allow the soup to rest for 5 minutes before serving. Like many Italian dishes, this soup tastes even better the next day as the flavors continue to develop overnight in the refrigerator.</li></ol>