In a bowl large enough to fit the fish, combine the carom seeds, red chili powder, turmeric, and salt. Toss the fish pieces to coat. Sprinkle in lemon juice and mix again. Set aside.
Heat ⅓ cup of the oil in a large pan over medium-high heat. Add the onions and sauté, stirring often, until deeply golden, about 18 minutes. Deglaze the pan with ¼ cup water. Add the garlic and ginger and continue to sauté for another 2 minutes, until fragrant. The onions will have deepened even more in color. Deglaze again with 2 tbsp water. As the water dries up, add the coriander, cumin, Kashmiri chili powder, red chili powder (if using), turmeric, and salt. Give it a few stirs to bloom the spices.
Add the tomatoes and sauté until the tomatoes have melded into the masala and oil separates, about 5 minutes.
Add 1 cup water and bring the curry to a simmer. Reduce the heat to medium, cover, and allow to simmer while you prepare the fish.
Meanwhile, heat a nonstick skillet over medium-high and add the remaining 2 tbsp oil. Move the pan around to coat the bottom in oil. Once the oil is hot, place the fish pieces in the skillet – I can usually get them all in one layer. Pan-fry for 4 minutes per side, until cooked through and golden (the more color, the better). Exact cook time will depend on the thickness of the filet. If you have a meat thermometer, the internal temperature should reach 145℉. Turn off the heat. Uncover the curry and increase the heat to sauté out excess water until you can see the oil separating. Add ¼-½ cup water, depending on how much curry you’d like, and allow it to come to a simmer. Transfer the cooked fish pieces to the simmering curry.
Reduce the heat to low. Allow the flavors to meld for 2-3 minutes while you top with green chili peppers, black pepper, julienned ginger, cilantro, and lemon juice. Serve immediately with naan, roti, or other bread.