In a cast-iron casserole dish or wide saute pan, toast the coriander seeds, cumin seeds, and fenugreek seeds until aromatic, about 2 minutes. Transfer the seeds to a spice grinder, add dried coconut, and grind the mixture to a fine powder.
Add 1½ tablespoons of oil to the dish or pan and heat it over medium-high heat until shimmering. Add the chopped onions and saute until light golden brown and translucent, about 10 minutes. Add the grated ginger and garlic, and cook for an additional minute until fragrant.
Transfer the cooked onions to a food processor. Add the tomato sauce or chopped tomatoes to the food processor and process until the mixture is smooth but slightly coarsely.
Add the remaining oil to the dish and heat it over medium-high. Add the mustard seeds, cumin seeds, and fenugreek seeds. When the seeds begin to splutter, add the curry leaves and cook until aromatic, taking care not to burn the seeds, approximately 1 minute.
Add the ground onion and tomato mixture to the dish and stir. Then add chili powder, turmeric, ½ teaspoon salt, green chilies, and half of the ground seed-coconut powder. Cook the mixture until it starts to bubble at the edges of the pot, stirring occasionally, about 2 minutes.
Stir in the tamarind paste, 1½ cups of water (adjust as needed), and garam masala (if using). Cover the dish with a lid, reduce the heat, and let it simmer for 20 to 30 minutes, stirring occasionally, until the sauce thickens. Adjust the tamarind, spices, and seasonings according to taste.
The consistency of the sauce should be similar to pasta sauce. Adjust with water if needed. Some oil will start to rise to the surface. Add the coconut milk, remaining ground seed-coconut powder, stir and cook for 1 minute.
Carefully slide in the fish pieces. Gently swirl the dish to incorporate the ingredients, cover and let it simmer for 10 minutes until the fish turns almost opaque, is tender and flaky. Cooking time will vary based on the thickness and type of fish.
Add half of the chopped cilantro and let it simmer for another 5 minutes until more oil trickles to the surface. Avoid stirring too much to prevent breaking the fish. Garnish with remaining cilantro and serve it hot with steamed rice.
