Rinse the navy beans in a colander under cold water and check for any debris.
In a large pot, heat the olive oil over medium heat. Add the onions, carrots, and celery, and sauté until softened, about 5 minutes.
Add the minced garlic and cook for another minute until fragrant.
Pour in the broth and add the rinsed beans, ham hock, thyme, and bay leaf. Bring to a boil.
Once boiling, reduce the heat to a simmer, cover, and cook for about 1.5 to 2 hours, or until the beans are tender.
Remove the ham hock, shred any meat, and return the meat to the pot.
Season the soup with salt and pepper to taste and stir in the fresh parsley before serving.