In a large pot, heat the olive oil over medium heat. Add the chopped onion and garlic, sautéing for about 3-4 minutes until softened and fragrant.
Add the diced ham to the pot, cooking for another 2-3 minutes to warm through and allow flavors to meld.
Stir in the cubed potatoes, thyme, smoked paprika, and a pinch of salt and pepper. Mix well.
Pour in the chicken broth, making sure the potatoes are fully submerged. Bring the mixture to a boil, then reduce the heat and let it simmer for 15-20 minutes, or until the potatoes are tender.
Using an immersion blender, blend a portion of the soup to create a creamy consistency while keeping some chunks of potatoes intact. Alternatively, you can transfer some of the soup to a blender, blend, and return it to the pot.
Stir in the heavy cream and frozen peas (if using). Simmer for an additional 5 minutes to heat through. Adjust seasoning with salt and pepper as needed.
Ladle the soup into bowls and garnish with sliced green onions for freshness.
Notes
Optional frozen peas can be added for a touch of sweetness.