Bengali-Style Fried Fish in Onion and Tomato Curry (Fish Bhuna) Recipe

Vicky Wasik

Why It Works

  • Cutting the fish into steaks ensures that it stays moist.
  • Frying the fish first gives it a crispy exterior.
  • Vinegar balances the sweetness from the onions and the heat of the chili powder.

Bhuna is the term used for a thick and paste-like South Asian curry. In this fish bhuna, dorade steaks are seasoned with bright turmeric and fruity Kashmiri red chile powder before they're fried, then tossed in a spicy and tangy onion and tomato curry. It's great served alongside rice and a simple cucumber salad for a change of pace from your usual fish dinner.

Recipe Facts

Active: 45 mins
Total: 45 mins
Serves: 4 to 6 servings

Rate & Comment


  • 2 small whole head-on dorade or other flavorful white-fleshed fish, cleaned (about 3 pounds total once cleaned; 1.4kg); see note

  • 2 teaspoons (8g) Diamond Crystal kosher salt, plus more to taste

  • 2 teaspoons (4g) ground turmeric

  • 3 teaspoons (6g) Kashmiri red chile powder (or 1 teaspoon cayenne pepper), divided

  • Neutral oil, such as canola, safflower, or peanut, for frying

  • 1 medium yellow onion, thinly sliced (about 10 1/2 ounces; 300g)

  • One 2-inch piece ginger, peeled and grated (about 15g)

  • 1 bay leaf

  • 1 tablespoon (8g) ground cumin

  • 2 teaspoons (4g) ground coriander

  • 1 1/2 cups cored and diced skin-on fresh tomatoes (12 ounces; 340g), from about 3 small tomatoes

  • 1 tablespoon (15g) distilled white vinegar

  • Freshly ground black pepper

  • Chopped fresh cilantro leaves and tender stems, for garnish


  1. Remove heads from fish and cut bodies into 1-inch-thick steaks (or ask your fishmonger to do this for you; see note). In a small bowl, combine kosher salt, turmeric, and 2 teaspoons (4g) Kashmiri red chili powder. Sprinkle salt mixture all over fish.

  2. Add enough oil to a large sauté pan to fill it 1/4 inch deep and heat over high heat until shimmering. Working in batches if needed, add seasoned fish steaks and cook until browned on both sides, about 10 minutes. Using a slotted spatula, transfer cooked steaks to a plate, tray, or dish and set aside.

  3. Drain off all but 2 tablespoons oil from sauté pan. Continuing to work over high heat, add onion and cook until browned in spots, about 5 minutes; lower heat at any point if onion threatens to burn.

  4. Lower heat to medium and add ginger, bay leaf, remaining 1 teaspoon (2g) chili powder, cumin, and coriander, cooking until the spices bloom, about 3 minutes. Add diced tomatoes and cook until some of the liquid has cooked off and you have a thick, paste-like curry, about 5 minutes. Finish the gravy with vinegar and season with salt and pepper to taste.

  5. Nestle the fried fish steaks into the curry, gently tossing to coat in the sauce. Garnish with chopped cilantro and serve.

Special equipment

Chef's knife, stainless steel sauté pan


If you don't have dorade, any other fish can work well in this dish as long as it's cut into steaks. Keeping the fish bone-in prevents it from drying out in this two-step cooking process. Good substitutes for dorade include catfish, snapper, and striped bass. You can ask your fishmonger to clean, scale, and cut the fish into steaks if you don't want to do it yourself (but keep the heads—they're a delicious snack once fried).

This Recipe Appears In

Nutrition Facts (per serving)
319 Calories
20g Fat
10g Carbs
25g Protein
Show Full Nutrition Label Hide Full Nutrition Label
Nutrition Facts
Servings: 4 to 6
Amount per serving
Calories 319
% Daily Value*
Total Fat 20g 26%
Saturated Fat 2g 9%
Cholesterol 42mg 14%
Sodium 597mg 26%
Total Carbohydrate 10g 3%
Dietary Fiber 2g 8%
Total Sugars 4g
Protein 25g
Vitamin C 14mg 71%
Calcium 75mg 6%
Iron 2mg 11%
Potassium 759mg 16%
*The % Daily Value (DV) tells you how much a nutrient in a food serving contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.
(Nutrition information is calculated using an ingredient database and should be considered an estimate.)