Rinse your dried white beans under cold water and pick out any weird-looking ones. Place them in a bowl and cover with water about 3 inches above the beans. Let them soak overnight or at least 6 hours — this makes them cook faster and easier on your digestive system. Don't panic if you forgot to soak; quick-soak by boiling them for 2 minutes, then letting them sit for an hour.
Drain and rinse those soaked beans really well. Heat olive oil in a large pot over medium-high heat until it shimmers. Add your diced onion and cook for about 4 minutes until it gets soft and slightly golden. You'll know it's ready when it starts to smell amazing.
Toss in your diced carrots and celery stalks, stirring everything around for another 2-3 minutes. These veggies are building the flavor foundation for your white bean soup recipe, so don't rush this part. Add your minced garlic and cook for just 1 minute until fragrant.
Pour in the chicken broth and add your drained beans. Drop in the bay leaf, dried thyme, smoked paprika, and ground cumin. Give it a good stir and bring everything to a boil, then reduce heat to low. Simmer for about 2 hours until those beans are completely tender — mine always sticks a little to the bottom and that's totally fine.
After the beans are soft, carefully mash about half of them against the side of the pot using a potato masher. This creates that creamy texture without adding extra ingredients — honestly, this technique beats fancy immersion blenders every time. You want some whole beans remaining for texture.
Remove the bay leaf and stir in your heavy cream and salt. Let it all warm through for 2-3 minutes but don't boil it after adding the cream. Taste the soup and adjust seasonings — I always add a pinch more salt because beans absorb so much during cooking.
Ladle your gorgeous white bean soup into bowls and taste as you go. If it's thicker than you like, add more broth. If it's too thin, let it simmer another 10 minutes. Top with fresh cracked pepper and maybe some crusty bread for dipping.