Melt the butter in a large pot or Dutch oven over medium heat. Add the chopped onion and garlic, sautéing until the onion becomes translucent and fragrant, about 3-4 minutes. Stir in the chopped celery and carrots, continuing to cook for another 5 minutes until the vegetables begin to soften.
Add the Potatoes and Ham:
Add the diced potatoes and cooked ham to the pot, stirring to combine with the sautéed vegetables.
Make the Broth:
Sprinkle the flour over the vegetable and ham mixture, stirring constantly to prevent lumps. Cook for about 2 minutes to eliminate the raw flour taste. Gradually pour in the chicken broth, stirring constantly to ensure a smooth consistency. Bring the mixture to a boil, then reduce the heat to a simmer.
Simmer the Soup:
Cover the pot and let the soup simmer for 15-20 minutes, or until the potatoes are tender and easily pierced with a fork.
Add the Cream:
Stir in the milk and heavy cream, and season with salt, black pepper, and thyme. Continue to cook for another 5-10 minutes, allowing the flavors to meld together and the soup to thicken slightly.
Adjust Consistency:
If the soup is too thick, add a bit more chicken broth or milk until the desired consistency is reached. If it’s too thin, let it simmer uncovered for a few more minutes to reduce and thicken.
Garnish and Serve:
Serve hot, garnished with chopped green onions and shredded cheddar cheese if desired. Enjoy your creamy, comforting ham and potato soup!