In a large pot, heat the olive oil over medium heat. Once hot, add the chopped onion, diced carrots, and celery. Sauté the mixture for about 5 minutes, stirring occasionally, until the vegetables start to soften and the onion becomes translucent.
Stir in the minced garlic and continue to sauté for an additional 1 minute, allowing the garlic to release its aromatic fragrance without browning.
Add the diced potatoes and the cooked ham to the pot, mixing everything thoroughly to ensure even distribution of the ingredients.
Pour in the chicken broth and sprinkle in the dried thyme, parsley, salt, and pepper. Stir the mixture well and increase the heat until it reaches a gentle boil.
Once the soup is boiling, reduce the heat to low and cover the pot with a lid. Allow it to simmer for 15-20 minutes, or until the potatoes are fork-tender.
After the potatoes have cooked through, stir in the milk (or cream). Let the soup warm gently for an additional 5 minutes, adjusting the seasoning with more salt and pepper if necessary.
Remove the pot from heat and let the soup cool slightly before serving. Ladle the soup into bowls and garnish with fresh chives, if desired, for a pop of color and flavor.
Notes
Feel free to substitute milk with cream for a richer texture.