In a large pot, melt the butter and cook the onions until softened.
Whisk in the flour with the butter and onions over medium-low heat to create a roux.
Gradually add the milk, whisking constantly until smooth.
Pour in the chicken stock, bring to a simmer, and cook for about 20 minutes until thickened.
Stir in the broccoli, carrots, and celery. Let everything simmer until the vegetables are tender, about 15–20 minutes.
Turn off the heat and stir in the cheddar cheese until melted and creamy. Add salt to taste.