Soak the beans overnight: Put the navy beans in a large bowl and cover them with cold water by 2 inches. Leave them on the counter for 8-12 hours, then drain and rinse. In a hurry? Cover the beans with water in the pot, boil 2 minutes, pull them off the heat, and let them stand covered for 1 hour before draining. Soaking is hands-off and isn't counted in the times below.
Soften the vegetables: Heat the olive oil in a large Dutch oven or soup pot over medium heat. Add the onion, carrots, and celery and cook for 7-8 minutes, until the onion turns soft and translucent. Stir in the garlic and cook 1 minute more.
Add the bone and the broth: Nestle the ham bone into the pot. Add the drained beans, chicken broth, bay leaves, thyme, black pepper, and red pepper flakes if using, then bring it up to a boil.
Simmer low and slow: Turn the heat down, cover, and simmer for 1 1/2 to 2 hours, stirring every 30 minutes so nothing sticks to the bottom. The beans are done when you can crush one against the roof of your mouth with no chalky center left. Older beans can take up to 30 minutes longer, so taste one before you call it.
Pull the meat off the bone: Lift the ham bone out onto a plate and let it cool enough to handle. Pull off any meat, chop it, and stir it back into the pot. Discard the bone, the fat, and the bay leaves.
Add the diced ham: Stir in the 2 cups of diced ham and simmer uncovered for 10 minutes, until the soup is steaming and the ham is heated through to 165°F.
Thicken and season: Mash about 1 cup of the beans against the side of the pot with the back of a spoon or a potato masher, then stir them through. Taste and add salt now rather than earlier, since the ham and the broth both bring their own. Top the bowls with parsley.
Notes
Soak the navy beans in cold water for 8-12 hours before you start. The soaking time is hands-off and is not counted in the times above. Simmer covered for 1 1/2 to 2 hours, until a bean crushes with no chalky center left; older beans can need another 30 minutes. Salt only at the end, since the ham bone and broth are already salty, and heat the diced ham through to 165°F before serving.