Prep the mushrooms: Wipe mushrooms clean with a damp towel.
Trim tough stems, especially on shiitakes. Slice about 1/4-inch thick. Chop onion, mince garlic, and finely chop a generous handful of parsley leaves and tender stems.
Brown in batches: Heat 1 tablespoon olive oil and 1 tablespoon butter in a large pot over medium-high.
Add half the mushrooms with a pinch of salt. Cook, undisturbed, until they brown on one side, then stir and cook until deeply golden. Transfer to a bowl.
Repeat with remaining oil, butter, and mushrooms.
Sauté aromatics: Lower heat to medium. Add onion with a pinch of salt. Cook 4–5 minutes until translucent and lightly golden.
Stir in garlic and cook 30 seconds until fragrant.
Deglaze (optional): Pour in the white wine. Scrape up any browned bits from the pot. Let it bubble for 1–2 minutes until mostly reduced.
Thicken lightly: Sprinkle flour over the onions and stir for 30–45 seconds.
This prevents a raw flour taste and gently thickens the soup.
Build the broth: Return browned mushrooms to the pot. Add broth, bay leaf, and thyme. Bring to a gentle simmer and cook 12–15 minutes to meld flavors.
Adjust texture: For a rustic soup, leave it as is.
For a creamier texture, blend 1–2 cups of the soup in a blender, then return it to the pot. Or use an immersion blender to pulse until about half smooth, half chunky.
Add cream and brighten: Stir in cream or half-and-half. Simmer 2 minutes.
Turn off the heat. Add chopped parsley, lemon zest, and a small squeeze of lemon juice. Taste and season with salt, pepper, and a pinch of red pepper flakes if you like.
Serve: Ladle into warm bowls.
Finish with a drizzle of olive oil, more parsley, and cracked black pepper. Crusty bread on the side is never a bad idea.