Start by soaking the navy beans. Place them in a large bowl, cover with water, and let them soak overnight. If short on time, you can use the quick soak method by boiling the beans for 5 minutes, then letting them sit in the hot water for an hour.
Drain and rinse the soaked beans, then set aside.
In a large pot or Dutch oven, heat the olive oil over medium heat. Add the diced onion, carrots, and celery. Sauté for about 5-7 minutes until the vegetables are softened.
Stir in the minced garlic and cook for an additional 1 minute until fragrant.
Add the soaked beans, vegetable or chicken broth, thyme, bay leaf, and diced ham or sausage (if using). Bring the mixture to a boil.
Once boiling, reduce the heat to low and let the soup simmer, covered, for about 30-35 minutes or until the beans are tender.
Remove the bay leaf, and season with salt and pepper to taste.
For a creamier texture, you can use an immersion blender to blend a portion of the soup, or simply mash some of the beans with a fork.
Serve hot, garnished with fresh parsley if desired.