In a large pot or Dutch oven, melt 1 tbsp butter and add the mushrooms. Cook for 8-10 minutes or until browned. Season with salt, then remove from the pot and set aside.
Add 2 tbsp butter and all of the onions to the pot. Season with salt and pepper and cook for about 20-25 minutes, adding up to ½ cup of water (¼ cup at a time) if they’re looking dry.
Add the mushrooms back to the pot with the onions and make a well in the center. If you want to top your soup with a few mushrooms and onions, remove a small amount now.
Melt 3 tbsp butter in the well, then add the flour to the melted butter and mix to make a roux. Toss the flour mixture with the mushrooms and onions until they’re coated and cook for a minute to cook off the flour taste.
Stir in the marsala wine to deglaze the pot, then add the broth and bring the mixture to a boil.
Add thyme, parmesan rind, and cover the pot.
Cook on low heat for 15 to 20 minutes, then remove the cover and turn off the heat.
Remove the parmesan rind and thyme sprigs.
Using an immersion blender, blend the soup while adding in the cream.
Top the soup with desired toppings and serve with crusty bread.