Dry roast fenugreek seeds, cumin seeds, coriander seeds, mustard seeds, and black pepper on low heat for 5 minutes until fragrant. Cool completely and grind to a fine powder.
Heat gingely oil in a heavy-bottomed pan. Add mustard seeds, cumin seeds, fenugreek seeds, dried red chilies, and curry leaves. Let them splutter.
Add minced garlic, green chilies, and shallots. Sauté until golden brown and aromatic.
Soak tamarind ball in 1 cup warm water for 10 minutes. Extract thick tamarind juice and add to the pan.
Add chopped tomatoes, turmeric powder, red chili powder, coriander powder, and salt. Cook until tomatoes break down completely.
Add the freshly ground spice powder and mix well. Cook for 2-3 minutes until the raw smell disappears.
Add fish pieces gently and 3 cups water. Bring to a boil, then reduce heat and simmer for 15-20 minutes until fish is cooked through.
Adjust salt and spice levels. Garnish with fresh curry leaves and serve hot.