Trim off broccoli stems. With a vegetable peeler, peel off the tough outer, lower portion of the stems. Now slice the stems into 1/2" thick rounds.
Cut 1 1/2 cups of the upper portion of the broccoli into small, thumbnail-sized florets and reserve. Chop the rest of the upper portion into smaller pieces.
Melt the butter, or heat the oil, in a medium-sized pot set over medium heat. Add the onions and sliced broccoli stems and chopped florets and cook until the onions soften and broccoli turn bright green, about 5 minutes.
Add the stock and thyme, bring to a simmer, and cook 15 to 20 minutes, or broccoli is tender enough to puree.
Puree the soup in a food processor or blender, or in the pot with a hand (immersion) blender (see options). Add the reserved, thumbnail-sized pieces of broccoli to the soup, return the soup to a simmer, and cook until they are tender, about 5 minutes. Mix in the milk or cream, season the soup with salt and pepper, and serve.
Options: For a thicker soup, after the onions and broccoli have been cooked in the butter or oil, mix 2 Tbsp. all-purpose flour and cook and stir 1 minute. Now slowly mix in the stock, add the thyme, and then simmer, puree and finish the soup as described in the recipe.