Heat the olive oil and butter in a large, heavy-bottomed pot or Dutch oven over medium heat.
Add the chopped onions and sauté for 8-10 minutes until softened and golden.
Stir in the minced garlic and cook for 1 minute more until fragrant.
Add the sweet and hot paprika, stirring constantly for 30 seconds to toast the spices and release their aroma.
Pour in the sauerkraut, water, celery, carrot, and tomatoes with their juice.
Stir well to combine.
While the soup heats, place the dried mushrooms in a bowl and cover with hot water.
Let them soak for 15 minutes to rehydrate.
Drain, rinse thoroughly to remove any grit, slice them into thin strips, and add them to the pot.
Lightly crush the caraway seeds and add them to the soup, along with the sugar, red wine, dill weed, salt, and a generous amount of black pepper.
Bring the soup to a gentle boil, then reduce the heat to low.
Cover partially and let it simmer for at least 1 hour, or up to 2 hours for a deeper, more developed flavor.
Add a splash of water if the soup becomes too thick.
Taste and adjust seasoning with more salt and pepper if needed before serving hot.
Don't rush the simmer. The long, slow cooking time is essential for melding the complex flavors and tenderizing the sauerkraut.