Place beans in a large bowl or pot. Cover with cold water by 2 inches. Cover and let stand overnight. Drain and rinse the beans.
Heat olive oil in a large Dutch oven over medium-high heat. Add the onion and celery; cook until the vegetables start to soften, about 5 minutes. Add the garlic; cook for 30 more seconds, stirring constantly.
Add the beans, broth, ham hock, bay leaf, thyme, and ground black pepper to taste. Do not add salt at this time. Pour in enough cold water to cover the beans by about 1 inch. Give everything a good stir.
Bring the mixture to a boil, then reduce the heat to low or medium-low so that the liquid is at a gentle simmer. Partially cover the pot with a lid, allowing some of the steam to escape. Simmer for about 1 hour, stirring occasionally. If the beans start to look dry, add more water to keep them covered. If there’s more liquid in the pot than you would like, remove the lid completely.
Stir in about a teaspoon of salt. Add the diced ham. Continue simmering for 30-45 more minutes, until the beans are tender.
Discard ham hock, bay leaf, and thyme sprig. Use the back of a spoon or a potato masher to mash some of the beans, thickening the broth. Taste and season with additional salt and pepper, if necessary.
Ladle into bowls. Garnish with hot sauce, chow chow, a splash of vinegar, herbs, and/or chopped onion. Serve with a side of cornbread.