3 1/2 cups peeled and diced potatoes
1/3 cup diced celery
1/2 cup finely chopped onion
3/4 cup diced cooked ham
3 1/4 cups water
2 Tbsp. chicken bouillon granules
1/2 tsp. salt, or to taste
1 tsp. ground black pepper, or to taste
5 Tbsp. butter
5 Tbsp. all purpose flour
2 cups milk
Combine the potatoes, celery, onion, ham, and water in a stockpot. Bring to a boil, then cook over medium heat until potatoes are tender, about 10-15 minutes. Stir in the chicken bouillon, salt, and pepper.
In a separate saucepan, melt butter over medium low heat. Whisk in flour with a fork and cook, stirring constantly until thick, about 1 minute. Slowly stir in milk, preventing lumps from forming, until all the milk has been added. Continue stirring over medium-low heat until thick, about 4-5 minutes.
Stir the milk mixture into the stockpot and cook soup until heated through. Serve immediately.