In a large Dutch oven or soup pot over medium heat, melt 1 tablespoon butter. Add the onions and sauté 5-6 minutes, or until soft and translucent. Transfer onions to a bowl.
Using the same pan, melt the remaining 4 tablespoons of butter and sprinkle in the flour to make a roux. Cook over medium heat for about 3 to 5 minutes, whisking constantly, until the flour is thickened. Season the roux with 1 teaspoon of salt, 1/4 teaspoon of black pepper, and nutmeg. Slowly add the stock; whisking constantly. Add the half-and-half, paprika, remaining 1 teaspoon of salt, and remaining ¼ teaspoon of black pepper; whisk to incorporate all of the ingredients. Add the broccoli, carrots, and sautéed onions to the cream mixture. Simmer the soup for 15-20 minutes, or until broccoli and carrots are tender when pierced with a fork.
Add almost all of the sharp-cheddar (reserve 1-2 tablespoons for garnish), and parmesan cheese. Stir until both cheeses are melted and fully incorporated. At this point the soup is ready to serve, but if you prefer, you can use an immersion blender to puree the vegetables into the soup. It’s delicious both ways.
Portion soup into bowls and garnish with more shredded cheese, if desired. Serve immediately. Enjoy!