A traditional Serbian riverside classic, this hearty fish soup combines freshwater fish with sweet paprika, root vegetables, and tomatoes for a deeply savory broth. It is commonly served family-style with crusty bread and a side of fiery chili relish for an authentic Balkan experience.
Prep Time20 mins
Cook Time35 mins
Total Time55 mins
Servings6
Yield6 servings
Nutrition Facts
Per serving (estimated)
- 285 kcalCalories
- 9 gFat
- 1.5 gSaturated Fat
- 18 gCarbs
- 3 gFiber
- 5 gSugar
- 32 gProtein
- 320 mgSodium
- 780 mgPotassium
- 75 mgCalcium
- 2 mgIron
- 28 mgVitamin C
- 380 mcgVitamin A
Ingredients
For the fish stock
- 2 lb mixed freshwater fish (carp, catfish, trout), cleaned with heads and bones reserved
- 8 cups cold water
- 1 yellow onion, halved
- 1 bay leaf
- 6 whole black peppercorns
For the soup
- 3 tbsp sunflower oil
- 1 large yellow onion, finely diced
- 2 medium carrots, diced
- 1 small celery root, peeled and diced
- 1 red bell pepper, diced
- 4 garlic cloves, minced
- 1 tbsp sweet Hungarian paprika
- 1/2 tsp hot smoked paprika
- 2 medium tomatoes, grated (or 2 tbsp tomato paste)
- 2 medium potatoes, peeled and cubed
- 1 tbsp fresh lemon juice
- 2 tbsp flat-leaf parsley, finely chopped
- 1 1/2 tsp sea salt, plus more to taste
- 1/2 tsp freshly ground black pepper
To serve
- Crusty rye bread
- Fiery red pepper relish (ljutenica or ajvar)
Directions
- Combine the reserved fish heads, bones, halved onion, bay leaf, and peppercorns in a large stockpot with the cold water. Bring to a gentle simmer over medium heat and cook uncovered for 20 minutes, skimming any foam that rises.
- Strain the stock through a fine-mesh sieve into a bowl, discarding the solids. Return the stock to the pot, bring it back to a low simmer, and add the fish fillets. Poach gently for 7 to 9 minutes until the flesh flakes easily. Remove the fish with a slotted spoon and set aside.
- Meanwhile, heat the sunflower oil in a heavy soup pot over medium heat. Add the diced onion, carrots, celery root, and bell pepper and cook, stirring often, for 8 minutes until softened and lightly golden.
- Stir in the minced garlic, sweet paprika, and hot smoked paprika and cook for 30 seconds until fragrant, taking care not to burn the paprika.
- Add the grated tomatoes and cubed potatoes along with the strained fish stock. Bring to a boil, then reduce the heat and simmer uncovered for 15 minutes until the potatoes are fork-tender.
- Flake the reserved cooked fish into large chunks, discarding any skin or small bones, and return it to the pot. Stir in the lemon juice, salt, and pepper and simmer gently for 4 minutes to meld the flavors.
- Taste and adjust the seasoning, then stir in the chopped parsley just before serving. Ladle the soup into warm bowls and pass the crusty bread and pepper relish alongside.
- Encourage diners to squeeze extra lemon over their bowl and add a spoonful of the spicy relish for the traditional Serbian finish.
Cook’s Notes
- Use the freshest whole fish you can find; ask your fishmonger to fillet it and save the heads and bones for the stock.
- Always bloom the paprika in oil off the direct heat to deepen its flavor without scorching.
- For a thicker, more stew-like consistency, mash a few of the potato cubes against the side of the pot before adding the fish back in.
- A small splash of rakija or dry white wine stirred in at the end adds an authentic Serbian depth of flavor.
- Leftover soup tastes even better the next day; store refrigerated for up to 2 days and add a splash of water when reheating.










