Peel the onion and celeriac and cut into dice. Cut the leek into slices. In a pot with a thick bottom, heat the oil with butter, add the onion, celeriac and leek and stirring occasionally braise over low heat for about 5 minutes.
Peel the potatoes and cut into dice, divide the cauliflower into small florets. Add potatoes and cauliflower to the pot with onion, stir and fry for a minute. Sprinkle in semolina and then pour in stock and milk. Bring to a boil over high heat, then cover, reduce heat and cook for about 25-30 minutes until vegetables are soft.
Blend the soup very thoroughly (for about a minute) in a standing blender with the addition of cheese. Taste and season with salt if needed. Serve hot, sprinkled with shavings of crispy ham (cut the ham or bacon into dice and brown it in a pan while stirring).