Rinse beans and sort out foreign objects. Pour beans into a bowl or pan, cover with plenty of water (the water should be at least 1 inch above the beans), and soak overnight, or for at least 8 hours.
Heat oil in large Dutch oven over medium-high heat, and add onions, carrots, and celery. Season with salt and pepper. Sauté until softened, and onion is translucent, about 5 minutes.
1 teaspoon olive oil, 1 cup diced peeled carrots , 1 cup diced celery , 1 cup diced yellow onion, ½ teaspoon salt, ¼ teaspoon ground black pepper
Add cumin, parsley, and bay leaf. Stir to combine. Add beans, ham bone, and water. You can add more later if it gets too thick. Bring to a boil, reduce heat, and simmer for about 1 ½ hours or until beans are tender.
½ teaspoon ground cumin, 1 tablespoon dried parsley, 1 dried bay leaf, 1 ham bone, 8 cups water
Remove ham bone. If you like a thicker soup, remove a few cupfuls of the soup and mash the beans lightly before adding them back to the soup. Add the diced ham, and simmer for another 10 minutes.
2 cups diced fully cooked ham, about 8 ounces
Taste, adjust seasonings as desired. Remove bay leaf and serve. If not ready to serve, turn heat to low and simmer for as long as needed.
Video
Notes
Without a ham bone: If you don't happen to have a ham bone, no worries! Just skip that part and add diced ham at the end of the cooking time.
Not a fan of ham? If you would prefer not to use ham at all, kielbasa, Polish sausage, bacon, or Italian sausage can be substituted.
Vegetarian: Make this soup vegan or vegetarian by not adding any meat. Instead add a couple of tablespoons of nutritional yeast and use vegetable broth instead of water. If you want to add a bit of smoky flavor, smoked paprika can be added, to taste.
Storage: Leftover bean soup can be refrigerated for up to 5 days. Bean soup also freezes well and will keep for at least 6 months.