Preheat the oven to 350 degrees F (175 degrees C).
Combine Brussels sprouts, onion, olive oil, butter, and garlic in a large heatproof soup pot that fits into the oven. Mix well.
Roast sprouts mixture in the preheated oven for 20 minutes; stir. Continue roasting, stirring every 20 minutes, until soft and browned, about 1 hour total.
Return pot to the stove over medium heat. Add stock and bring to a simmer. Add milk, heavy cream, and Cheddar cheese and heat through, 5 to 10 minutes more. Use a stick blender to puree to the desired consistency. Season with salt and pepper.