Remove debris or pebbles, place the beans in a large bowl, and cover with at least 2 inches of cold water. Soak them for 8-12 hours or overnight.
To speed up the soaking time, bring a pot of water to a boil, remove it from the heat, add the beans, and soak for 2 hours.
After soaking, drain and rinse the beans thoroughly.
Next, add 8 cups (2 liters) of water, ham hocks, and Italian seasoning to a large pot. Bring the mixture to a boil, then reduce the heat to a simmer. Cover and cook for 1 hour or until beans are tender. An instant pot will shorten the time.
Remove the ham hocks, allow them to cool slightly, shred the meat (discarding the skin, fat, and gristle), and set it aside. Reserve the stock for later.
Heat oil in a large soup pot or Dutch oven over medium heat. Add the onion, carrot, and celery, and sauté for 5-7 minutes until softened.
Stir in the garlic and thyme, cooking for another 1-2 minutes until fragrant.
Add the cooked beans to the pot and pour in the reserved stock (broth or water), ensuring the beans and ham bones are fully submerged.
Bring the soup to a boil, reduce heat to low, cover, and simmer gently for an hour, stirring occasionally.
Next, add the shredded ham hock to the pot. Adjust salt and black pepper to taste carefully since ham is already salty.
Ladle the soup into bowls and garnish with fresh parsley, a drizzle of olive oil, or a sprinkle of black pepper. Serve hot.