Brown the sausage: Place a large pot or Dutch oven over medium heat. Add the sausage and cook, breaking it up with a spoon, until browned and cooked through, about 6–8 minutes.
Scoop out to a plate, leaving a tablespoon of fat in the pot.
Sauté the aromatics: Add the onion, carrots, and celery to the pot with a pinch of salt. Cook 5–7 minutes until softened and slightly golden. Stir in the garlic and cook 30 seconds until fragrant.
Season the base: Sprinkle in smoked paprika and thyme.
Stir for 30 seconds to bloom the spices. Return the sausage to the pot.
Add potatoes and broth: Add the cubed potatoes and bay leaf. Pour in enough broth to just cover the potatoes by about an inch.
Bring to a boil, then reduce to a gentle simmer.
Simmer until tender: Cook 12–15 minutes, or until the potatoes are fork-tender but not falling apart. Taste the broth and season with salt and pepper.
Blend partially for body: Remove the bay leaf. Using an immersion blender, blend a few quick bursts to thicken the soup while keeping plenty of chunks.
If you don’t have an immersion blender, mash a few scoops of potatoes against the pot with a spoon.
Stir in dairy and greens: Add the milk or half-and-half and the butter. If using kale or spinach, stir it in now and simmer 2–3 minutes until the greens are tender and the soup is creamy but not boiling hard.
Finish and adjust: Taste again. Add more salt, pepper, or crushed red pepper flakes for heat.
The soup should be savory, a little smoky, and nicely rounded.
Serve: Ladle into bowls and top with chopped parsley. Add a drizzle of olive oil or a sprinkle of grated Parmesan if you like. Serve with crusty bread for dipping.