Cut broccoli into florets and set aside. Optionally, chop the stems for added texture.
- In a large pot, melt butter (or heat olive oil) over medium heat. Add the chopped onion and cook for 3-4 minutes, until translucent.
- Add garlic and diced carrot, and cook for another 2 minutes until fragrant.
- Sprinkle flour over the vegetables and stir to form a roux. Cook for 1-2 minutes to thicken the mixture.
- Slowly add chicken or vegetable broth and milk, stirring continuously to avoid lumps. Bring the mixture to a simmer.
- Add broccoli, mustard, salt, and pepper. Simmer for 10-12 minutes, until broccoli is tender.
- Blend the soup using an immersion blender until smooth. For a chunkier soup, blend half of the soup and leave the rest as is.
- Stir in shredded cheddar cheese and Parmesan. Continue stirring until cheese is fully melted and incorporated.
- Adjust seasoning with salt and pepper to taste. If too thick, add more broth or milk to reach desired consistency.
- Ladle soup into bowls and garnish with croutons and fresh parsley. Serve immediately.