In a large stock pot, melt butter and add celery, carrots and onions. Cook to soften, about 7-8 minutes. There should be no color on vegetables.
Add parsley, cloves, bay leaf and chicken stock and chestnuts. Bring ingredients to a boil and reduce to a simmer and cook for 20 minutes.
Add Madeira. Cover the soup with a lid and cook for 5 minutes at a simmer.
Remove lid. If using an immersion blender, blend in same cooking pot. If using a blender, puree in batches until mixture is completely smooth with no visible chunks.
Strain pureed soup into a clean stock pot. Return to the heat and add heavy cream. Add black pepper to taste. Ensure the soup is extremely smooth. Use immersion blender again if needed. Serve warm.