Gather all ingredients. Preheat the oven to 425 degrees F (220 degrees C).
Place parsnips and carrots in a mixing bowl; sprinkle with 1 tablespoon olive oil and toss to coat. Season with salt and pepper. Spread vegetables evenly onto a baking sheet.
Roast in the preheated oven until vegetables are tender and parsnips are golden brown, about 30 minutes.
Heat remaining 1 tablespoon olive oil in a large saucepan over medium heat. Cook and stir onion and celery in hot oil until softened and onion is beginning to turn golden brown, about 5 minutes.
Reduce heat to low; stir in butter, brown sugar, garlic, and roasted parsnips and carrots. Continue to cook and stir until vegetables are very soft and beginning to brown, about 5 to 10 minutes.
Season with ginger, cardamom, allspice, nutmeg, and cayenne pepper; stir for 1 minute. Pour in chicken stock; bring to a boil over medium-high heat. Reduce heat to medium-low, partially cover, and simmer gently for 5 to 10 minutes.
Working in batches, pour soup into a blender, filling the pitcher no more than halfway full. Hold down the lid of the blender with a folded kitchen towel and carefully start the blender, using a few quick pulses to get soup moving before leaving it on to purée.
Pour blended soup into a clean pot. Stir in milk and cream. Return to a simmer over medium-low heat. Season with salt and pepper to serve.