If using bacon, fry the bacon pieces over medium-high heat in a large pot until crisp. Remove the bits from the pan and drain on a paper towel. Pour off the grease and return the pan to stove, leaving the bacon bits to the side.
In the same pot, add onions and cook over medium-high heat for 3-4 minutes.
Stir in cauliflower and black pepper, and cook for another 3-4 minutes, until the cauliflower starts turning golden brown.
Pour in broth, stir, and reduce the heat to simmer. Cook for 15 minutes. After that time, you can use an immersion blender to puree slightly or all the way if you prefer.
In a separate saucepan or skillet, melt the butter. Sprinkle in the flour and whisk to form a paste. Pour in the milk, then continue cooking until it becomes thick. Remove from the heat and stir in the cream (if using).
Pour the white sauce into the soup. Turn the heat to medium-high and bring back to a boil for 3-5 minutes. Reduce the heat to low and stir in the cheese until fully melted. Stir in the parsley.
Taste and adjust seasonings.
Serve with a little extra cheese, a sprinkle of bacon, and a sprinkle of parsley.