- Heat olive oil in a large pot or Dutch oven over medium heat. Add the diced onion, carrots, and celery. Sauté for 5–7 minutes, stirring occasionally, until the vegetables soften and the onion turns translucent. This step builds the foundational flavor of your soup, so don’t rush it.
- Add the minced garlic, rosemary, thyme, smoked paprika, and red pepper flakes (if using). Stir continuously for 60 seconds until fragrant. Cooking the spices briefly in oil — a technique called “blooming” — intensifies their flavor dramatically and elevates the entire dish.
- Pour in the diced tomatoes (with their juices) and vegetable broth. Stir everything together and bring the mixture to a gentle boil. Scrape up any browned bits from the bottom of the pot — those bits are packed with flavor.
- Before adding beans, mash about one-third of them in a small bowl using a fork or the back of a spoon. Add both the mashed and whole beans to the pot. This combination creates a beautifully thick, creamy broth while still maintaining hearty texture throughout the soup.
- Reduce heat to low and let the soup simmer uncovered for 15–20 minutes. This allows all the flavors to meld together beautifully. Stir occasionally and taste as you go, adjusting seasoning with salt and black pepper as needed.
- Stir in the chopped kale or spinach during the last 3–5 minutes of cooking. Kale will take slightly longer to wilt than spinach, so adjust accordingly. The greens add vibrant color, essential nutrients, and a pleasant earthy note to the finished soup.
- Remove the pot from heat and stir in fresh lemon juice. This final touch brightens all the flavors and adds a subtle complexity that takes the soup from good to unforgettable. Taste one final time, adjust seasoning, and serve hot.