Make the roux. Add the butter to a large pot over medium heat and stir until it’s melted and bubbling for a few seconds. Add the flour and stir to combine with the melted butter, cooking it until the flour has a lightly cooked aroma (about 1 minute). This is the start of the roux that will help thicken the soup.
Add diced onion. Add the diced onion and a pinch of salt, and saute them, stirring, until lightly softened (about 2 minutes).
Add stock and water. Add the chicken stock slowly while stirring and scraping the bottom of the pot so that the flour/roux does not stick to the pot. Then, add the water. Cover the pot and increase the heat to bring the liquid to a boil.
Simmer the veggies. Add the chopped broccoli florets and grated carrots and cover the pot. Decrease the heat so the liquid is simmering (not rapidly boiling). Simmer until the broccoli is tender, stirring occasionally (about 12-15 minutes, more or less depending on how big the broccoli pieces are).
Blend. Once the veggies are tender, blend the soup to your desired consistency. Use an immersion blender if you have one (it’s safer and easier). I like the soup just very slightly chunky (mostly smooth), but you can blend it until as smooth as you like. If you want a silky smooth soup, pass it through a sieve after blending or use a high-speed blender like Vitamix.
Add cream and cheese. Taste and adjust seasoning. Once you’ve blended the soup, add the cream and then the cheddar (reserving a handful to serve on top of the soup). Taste and add salt and pepper to your preference. Add a squeeze of lemon juice (about 1 tbsp or to taste) and, optionally, lemon zest.
Garnish. Serve the soup with the reserved grated cheddar on top and croutons.