Saute onion and carrot in butter until tender. Add in minced garlic and stir for another minute. Dust with flour, stirring continuously over medium heat until well combined; 1-2 minutes.
Slowly whisk in the milk and broth, bring to a boil and simmer 7-10 minutes. Reduce heat to medium low, add in broccoli. Continue to simmer until broccoli is tender, about 20 minutes.
If you want a smooth soup, puree in batches in the blender and return to the pot. If you prefer it chunky only puree half of the soup. I like to reserve a few cooked broccoli florets to float on top of each bowl. Add in shredded cheese and cook for an additional 3-5 minutes until cheese is completely melted. Season with salt, pepper, cayenne and nutmeg to taste.
Garnish with reserved broccoli florets, shredded cheddar, and optional crumbled bacon. Delicious served in bread bowls or with a side of crusty bread.