In a large pot over medium-high heat, melt the unsalted butter, and add the onion and garlic. Cook for 2 minutes or until the onion is softened.
Mix in the flour with the onion mixture, then slowly pour in the milk while stirring until it forms a slightly thick paste.
Next, using a whisk, smooth it out if necessary. Add chicken stock, water, potatoes, and season with salt and black pepper.
Bring to a simmer, and adjust the heat to low. Cook uncovered for about 10 minutes or until the potatoes are lightly cooked. Make sure to stir occasionally to avoid sticking to the bottom of the pot.
Lastly, add the small pieces of broccoli florets and stir. Cook for 2 minutes (or until the broccoli is cooked to your liking), then remove from the heat and stir in the freshly grated cheese. I also added some pepper flakes for a little kick (optional).