Peel and cut the potatoes into 1-inch chunks, placing them in a bowl of cold water to prevent browning—this also helps remove excess starch for a slightly lighter soup. Dice the carrots into 1/4-inch pieces, chop the celery into small pieces, finely chop the onion for even cooking, mince the garlic, and cube the ham into 1/2-inch bite-sized pieces. Having everything prepped and ready will ensure smooth cooking without interruptions.
Heat olive oil in a large pot over medium heat. Add the diced carrots, celery, and chopped onion, cooking for 5-7 minutes while stirring occasionally until the vegetables are softened and fragrant. This initial sauté develops the flavor foundation of the soup by allowing the aromatics to caramelize slightly, creating deeper, more complex flavors. I like to let the vegetables cook undisturbed for 2-3 minutes at a time to get a light golden color on the edges.
Stir in the minced garlic and cook for about 30 seconds until fragrant, then add the cubed ham, drained potatoes from Step 1, Italian seasoning, and red pepper flakes. Mix well to coat everything with the oil and distribute the seasonings evenly. Pour in the chicken broth and water, stirring to combine all ingredients and ensure the potatoes are mostly submerged.
Bring the soup to a boil over medium-high heat, then reduce the heat to medium-low and partially cover the pot with the lid ajar to allow steam to escape while keeping most of the liquid in the pot. Simmer for 25-30 minutes until the potatoes are very tender and break apart easily with a spoon. This slow simmer allows the flavors to meld together while the potatoes cook evenly throughout.
Using a wooden spoon or potato masher, gently mash some of the potatoes directly in the pot—aim for about 30-40% of the potatoes so you create a creamy, chunky consistency rather than a smooth purée. I prefer leaving plenty of potato chunks because they give the soup better texture and heartiness. Taste the soup and add salt and freshly ground black pepper as needed, remembering that the ham and broth already contribute saltiness, so season gradually.
Ladle the soup into bowls while hot. The natural creaminess from the mashed potatoes combined with the ham and dairy-free broth creates a satisfying, comforting soup without any cream or milk.