In a 4-quart saucepan, melt 3 Tbsp butter over medium heat. Whisk in flour. Continue whisking as the flour cooks, about 2-3 minutes.
Pour in half and half while whisking continuously. Add chicken stock and whisk to combine. Continue simmering over medium heat for 20 minutes. Stir frequently.
While the soup is simmering, melt 1 Tbsp butter in a small skillet over medium heat then add in the diced onion. Saute onions in butter until onions are translucent. Remove from heat.
To the soup, add the broccoli, carrots, and sauteed onions. Reduce heat to medium-low and cook for 30 minutes, until the vegetables are softened. The soup should continue to simmer gently while the vegetables are cooking.
Stir in cheese until fully melted. Add salt and pepper to taste.