Melt the butter in a large pot over medium heat. When the butter has melted and starts to foam, add the onions, carrots and celery.
Cook the vegetables gently for 5 minutes until the onions become translucent and start to soften, stirring frequently.
Add the garlic, sage and black pepper to the pot. Cook for 1 minute, stirring frequently.
Add the flour, stirring constantly until well incorporated. Cook the mixture for 2-3 minutes, stirring almost constantly to cook out the flour taste.
Slowly add in the chicken broth while stirring until it is incorporated. Use a whisk to make it easier to dissolve the flour. If you don’t have one, stir vigorously with a wooden spoon.
Raise the heat to medium-high and bring the broth to a simmer (it will take about 5 minutes).
Next, add the ham and let the soup come back to a simmer.
Then, lower the heat to medium-low, half-cover the pot and continue simmering for 15 minutes, stir occasionally. Keep the soup at a simmer. Raise or lower the heat if necessary.
Add the rice, half-cover and continue cooking for 5 minutes. Stir often to make sure the rice is not sticking to the bottom of the pot.
Take the pot off the heat and add the half and half. Stir to combine.
Return the pot to low heat and warm through. Do not let the soup come to a simmer or boil.
Taste and add salt, if needed. As a reference we did not add extra to ours.