Melt the butter in a large heavy-bottomed pot or Dutch oven over medium heat. Add the chopped onion and sauté for 4-5 minutes until softened. Stir in the minced garlic and cook for 30 seconds until fragrant.
Sprinkle the flour over the butter and onion mixture. Whisk constantly for 1 minute to cook the flour and create a roux (the thickening base).
Gradually pour in the chicken broth and half-and-half, whisking continuously to ensure there are no lumps. Bring the liquid to a gentle simmer.
Stir in the chopped broccoli and grated carrots. Reduce the heat to low, cover the pot, and let it simmer for 15-20 minutes, or until the broccoli is very tender.
Remove the pot from the heat. This is crucial so the cheese doesn't separate!
Gradually add the grated sharp cheddar cheese a handful at a time, stirring gently until it is completely melted into a smooth, velvety consistency.
Season the soup with salt, black pepper, and paprika. Taste and adjust if needed. Serve hot, preferably in a bread bowl or with crusty bread on the side!