In a large dutch oven, heat the olive oil over medium-high heat; add the ham and cook, stirring, until golden, about 5 minutes. Using a slotted spoon, transfer the ham to a plate. Add the leek and garlic to the pot and cook until tender, about 2 minutes. Stir in the potatoes and chicken broth and bring to a simmer; season with salt and pepper. Cook until the potatoes are almost tender, 8 to 10 minutes. Stir in the asparagus and cook until tender, about 5 minutes. Remove from the heat.
Scoop out 1/2 cup asparagus pieces and set aside for garnish. Using a blender and working in batches, puree the soup. Return the soup to the pot, whisk in the yogurt and season with salt and pepper. Ladle the soup into bowls, sprinkle the ham and asparagus pieces on top and serve with the bread.