INGREDIENTS
1 pound dried cannellini beans
3 1/2 quarts (14 cups) water, plus more for soaking the beans
1 meaty smoked ham bone or 2 ham hocks (about 1 pound)
3 fresh thyme sprigs or 1/2 teaspoon dried thyme
2 medium carrots
2 medium celery stalks
1 medium yellow onion
1 teaspoon kosher salt, plus more as needed
1 1/2 cups medium-dice, fully cooked smoked ham (about 8 ounces)
Freshly ground black pepper
INSTRUCTIONS
Place the beans in a large bowl and pick through them, removing and discarding any broken beans or stones. Cover them with at least 3 inches of cold water. Allow to soak uncovered and at room temperature at least 8 hours or overnight. Drain in a colander and set aside.
Place the measured water and ham bone or hocks in a Dutch oven or a large, heavy-bottomed pot and bring to a boil over medium-high heat. Reduce the heat to medium and simmer uncovered for 1 hour.
Add the soaked beans and thyme, stir to combine (leave the bone or hocks in the pot), and return to a simmer, skimming the surface with a spoon as necessary to remove any scum. Cook, stirring occasionally, until the beans are almost completely tender but still a little underdone in the center, about 1 hour (the beans should not be completely cooked because they will cook more later).
Meanwhile, peel and cut the carrots into medium dice and place in a medium bowl. Cut the celery and onion into medium dice and add them to the bowl with the carrots. Add the diced vegetables and measured salt to the pot, stir to combine, and bring to a simmer. Cook, stirring occasionally, until the beans and vegetables are tender and the meat is falling off the bone, about 40 minutes more. Turn off the heat.
Remove the ham bone or hocks to a cutting board and let sit until cool enough to handle. Remove the meat from the bones and set it aside (discard the skin and bones).
Using a potato masher, lightly mash half of the beans and vegetables, leaving the remaining half intact. Stir in the diced and reserved ham. Taste and season with salt and pepper as needed.