Finely dice the onion into 1/4-inch pieces for even cooking and better texture distribution in the soup. Cut the carrot and celery stalks into similarly sized pieces (about 1/4-inch). Mince the garlic cloves. Having everything prepped before cooking allows you to work efficiently once the butter is hot and prevents any ingredients from burning while you're still chopping.
Melt the butter in a large pot over medium heat. Once melted and foaming, add the diced onion, carrot, and celery, stirring occasionally. Cook for about 5 minutes until the vegetables begin to soften and the onion becomes translucent. Add the minced garlic and cook for another 30 seconds, stirring constantly until fragrant. This technique, called sweating the aromatics, develops a sweet, mellow flavor foundation that gives the soup its depth.
Pour in the chicken stock and add all 5 cans of navy beans (including their liquid). Add the 2 smoked ham hocks, which will provide rich, authentic flavor as they simmer. Stir in the thyme, rosemary, bay leaves, and cubed ham. Season with freshly ground black pepper (hold off on salt for now since the ham hocks and broth are already salty). Bring the mixture to a boil over medium-high heat, then reduce the heat to low, cover partially, and simmer gently for 1 to 1.5 hours. I like to simmer with the lid slightly ajar so you can see what's happening and ensure the liquid reduces slightly, which concentrates the flavors.
Carefully remove the ham hocks from the pot and set aside on a cutting board to cool slightly. Once cool enough to handle, pull the meat from the bones, discarding the skin and bones, and return the shredded meat to the pot. Ladle about 2 cups of the cooked beans and broth into a blender (working in batches if needed) and blend until completely smooth. Stir this pureed mixture back into the soup. This technique creates a naturally creamy texture without any cream, giving the soup body and richness while keeping it lighter than traditional versions.
Taste the soup and adjust seasoning with salt and freshly ground black pepper as needed. Since the ham and stock already contain salt, add conservatively. Meanwhile, cook the 4 slices of bacon in a separate skillet over medium heat until crispy, about 8 minutes. Drain on paper towels and crumble into bite-sized pieces once cooled slightly. Remove the bay leaves from the soup before serving.
Ladle the soup into bowls and top each serving with the crispy crumbled bacon and fresh chopped parsley. The bacon adds a textural contrast and smoky note that complements the ham and beans beautifully. Serve hot and enjoy.