Melt butter in a large stockpot or Dutch oven over medium heat. Add onion, carrots, and celery cook, stirring frequently, about 8-10 minutes. Stir garlic, thyme, and bay leaf cook until fragrant, about 1-2 minutes.
5 tablespoons unsalted butter, 2 large carrots, 3 large celery stalks, 1/2 medium onion, 2 teaspoons fresh thyme leaves, 2 cloves garlic, 1 bay leaf
Whisk in flour, cook for 1 minute. Slowly whisk in milk. Add potatoes, corn, ham, salt, and pepper.
3 tablespoons all-purpose flour, 3 1/2 cups milk, 2 large russet potatoes, 1 1/4 cups frozen corn kernels, 12 oz boneless ham steak, 1 teaspoon kosher salt, 1/2 teaspoon fresh ground pepper
Bring to a boil; reduce heat and simmer until potatoes are tender about 13-15 minutes.*
When the potatoes are tender, use a potato masher and mash about 1/3 of the potatoes. This depends on your desired thickness of the soup. We like it thick and creamy.
Season to taste with salt and pepper.
Serve immediately.