Melt butter in a large pot over medium heat. Add onion, carrots, and celery, cooking until they begin to soften, about 4 minutes.
Incorporate the ham and potatoes into the pot and cook for 2 minutes. Follow with garlic and cook until aromatic, roughly 30 seconds.
Sprinkle in the flour, stirring it through the ingredients, and cook for 2 minutes to remove the raw flour taste.
Pour in the chicken stock and add bouillon. Stir well and bring the mixture to a boil. Cook until the potatoes are just fork-tender, about 10-12 minutes.
Turn the heat down to medium-low, add the milk, and continue stirring until the soup thickens, approximately 5 minutes.
Season the soup with salt and pepper to taste. Adjust the seasoning as needed.
Serve the soup warm and enjoy a comforting meal. DEVOUR!