In a large skillet, heat the vegetable oil over medium heat. Allow it to warm for a minute until shimmering but not smoking.
Add the grated onion to the skillet and sauté for about 2-3 minutes until it becomes translucent. Stir in the grated ginger and minced garlic, cooking for another minute until fragrant.
Stir in the diced tomatoes (or canned tomatoes) and let everything cook together for about 5 minutes. Sprinkle in the garam masala, chili powder, salt, and black pepper. Cook for an additional 1-2 minutes to toast the spices.
Slowly pour in the coconut milk and water, stirring to combine. Bring the mixture to a gentle simmer. Add the fresh chili peppers if desired.
Carefully nestle the fish fillets into the simmering sauce. Allow them to cook for about 5-7 minutes or until the fish is opaque and flakes easily with a fork.
Taste the curry and adjust the seasoning if necessary. Remove the skillet from heat and let it rest for a couple of minutes.
Serve your Indian Fish Coconut Curry hot over steamed basmati rice or with warm naan for a truly comforting meal.