Fish Makhani (Fish in Creamy Gravy) Recipe

Fish Makhani
Gusto Images/ Getty Images
Prep: 2 hrs
Cook: 30 mins
Total: 2 hrs 30 mins
Servings: 4 to 6 servings

Fish Makhani is just what its name suggests—fish in a delicious, thick, slightly tangy and very creamy sauce. You can make Fish Makani with just about any fish but it tastes best with a fish that has firm, white flesh and a mild taste. You can also substitute the fish with prawns.

In India, lots of people are vegetarians but still eat fish. This is the perfect dish for them!. Serve Fish Makhani on a bed of plain boiled, long-grain rice like basmati. Better still, team it with Kaali Daal, Naan and a salad for a full and very fulfilling meal.


For the fish:

  • 2 pounds (1 kilogram) fish fillets, any fish with firm white flesh, skin removed, cut into 2-inch pieces

  • 1 lime, juiced

  • Salt, to taste

  • 1 teaspoon red chili powder, to taste

  • 6 whole cloves

  • 8 to 10 peppercorns

  • 1 (1-inch) stick cinnamon

  • 2 bay leaves

  • 8 to 10 almonds

  • 3 to 4 pods cardamom

  • 1 cup plain yogurt, not sour

For the gravy:

  • 3 tablespoons vegetable oil, canola, or sunflower cooking oil

  • 2 onions, chopped

  • 2 teaspoons garlic paste

  • 1 teaspoon ginger paste

  • 2 teaspoons coriander

  • 1 teaspoon cumin

  • 1/4 teaspoon turmeric

  • 1 (14-ounce/400-gram can) chopped tomatoes, half of them pureed to a smooth paste in a food processor, the other half left in chunks

  • 2 cups (500 milliliters) fish stock

  • 2 tablespoons fenugreek leaves

  • 3 tablespoons unsalted butter, softened

  • Salt, to taste

  • Coriander leaves, for garnish

Steps to Make It

  1. Mix the fish, lime juice, salt and red chilli powder in a large, nonmetallic bowl. Cover and allow to marinate for 1 hour.

  2. Heat a flat pan or griddle on medium heat and gently roast (stirring frequently) the cloves, peppercorns, cinnamon, bay leaves and almonds till they darken slightly. Cool and add the cardamom seeds. Now grind into a coarse powder in a clean, dry coffee grinder.

  3. Mix the yogurt, above whole spice powder, coriander, cumin, and turmeric powders together and add them to the fish. Allow it to marinate for another hour.​

  4. Heat the oil in a deep pan over medium heat. When hot, add the onions. Fry till a pale golden brown in color and then add the ginger and garlic pastes. Fry for a minute.

  5. Add only the fish from the fish-spice mix and fry till sealed (fish will turn opaque and the flesh will go from pink to whitish in color). Stir very gently.

  6. Now add the tomato paste and chopped tomatoes, fish stock, kasuri methi and remaining part of the yogurt-spice mix to the fish.

  7. Cook till the fish is tender and the gravy is reduced to half its original volume. Stir very gently every now and then to avoid breaking the fish up.

  8. Melt the butter in another small pan and then pour it over the fish. Garnish with coriander leaves and serve with Naan, Kaali Daal, and a salad.

Tip: For an authentic and traditional cooked-over-the-coals flavor: When the fish is cooked, make a small bowl shape with aluminum foil and place it on top of the curry ("floating" on it). Heat a briquette of charcoal on an open flame till red hot and gently put the charcoal into the aluminum foil bowl. Cover the dish immediately. Remove the cover just before serving, discard the foil bowl and charcoal and serve. The curry will be infused with a lovely smokey flavor.