Vegan Tofu Makhani Curry with Basmati Rice

Vegan Tofu Makhani Curry with Basmati Rice

Silken tomato-cashew gravy, perfumed with toasted cumin and finished with vegan butter and fenugreek's bitter-sweet whisper, clings to golden-edged tofu cubes. Served atop fluffy, steam-scented basmati rice.

1h 20mIntermediate4 servings
Remix

Equipment

Tofu press
Mixing bowls
Fine mesh strainer
Chef's knife
Cutting board
Microplane grater
Rimmed baking sheet
Parchment paper
Small saucepan with tight-fitting lid
Large heavy-bottomed saucepan
High-speed blender
Wooden spoon or silicone spatula
Kitchen scale

Ingredients

4 servings

Tofu and Marinade

  • 450 g extra firm tofu, pressed for 30 minutes, then cut into 2.5cm cubes
  • 80 g unsweetened plant-based yogurt, plain soy or coconut yogurt, cold
  • 10 ml lemon juice, freshly squeezed, for marinade
  • 10 g fresh ginger, peeled and finely grated
  • 10 g garlic cloves, peeled and minced
  • 4 g garam masala, ground, for marinade
  • 3 g kashmiri chili powder, ground, for marinade
  • 2 g ground cumin, ground, for marinade
  • 2 g fine sea salt, for marinade

Cashew Cream

  • 100 g raw cashews, unsalted, soaked in hot water for 30 minutes then drained
  • 200 ml water, cool fresh water for blending cashews

Curry Sauce

  • 200 g yellow onion, peeled and finely chopped into 5mm dice
  • 15 g garlic cloves, peeled and minced
  • 15 g fresh ginger, peeled and grated on a microplane
  • 400 g crushed tomatoes, canned, plain, no salt added if possible
  • 30 ml neutral cooking oil, such as grapeseed, sunflower, or avocado oil
  • 5 g ground coriander, ground
  • 4 g ground cumin, ground, for sauce
  • 6 g garam masala, ground, for sauce
  • 3 g kashmiri chili powder, ground, for sauce
  • 2 g ground turmeric, ground
  • 8 g fine sea salt, for sauce, plus additional to taste at the end
  • 5 g coconut sugar, ground or finely grated
  • 4 g kasoori methi, dried fenugreek leaves
  • 50 g vegan butter, softened, for finishing the sauce
  • 15 ml lemon juice, freshly squeezed, stirred in off the heat
  • 100 ml water, warm, for adjusting sauce consistency as needed

Basmati Rice

  • 300 g basmati rice, dry, rinsed until water runs clear, soaked 20 minutes and drained
  • 600 ml water, fresh, for cooking the rice
  • 4 g fine sea salt, for the rice cooking water
  • 1 bay leaf, dried
  • 3 green cardamom pods, lightly crushed with the side of a knife

Garnish

  • 15 g fresh cilantro leaves, roughly chopped, leaves and tender stems
  • 10 g vegan butter, melted, for drizzling at service

Nutrition (per serving)

Nutrition is estimated per serving. Nutrients without complete source data are omitted.

748
Calories
24g
Protein
87g
Carbohydrates
37g
Fat
7g
Fiber
1139mg
Sodium
Full nutrition
Calories
748 kcal
Protein
24 g
Carbohydrates
87 g
Fat
37 g
Fiber
7 g
Sodium
1139 mg
Saturated Fat
12 g
Calcium
395 mg
Vitamin C
19 mg
Water
316 g

Sources: Aggregated Public Data, USDA FoodData Central

Method

01

Press the tofu to remove excess moisture. Wrap the 450g block in two clean kitchen towels, place on a rimmed plate, and weight with a heavy object such as a cast-iron skillet or a stack of cookbooks. Press for at least 30 minutes while you prepare the other components.

30mLook for: The block appears drier at the surface and has visibly shrunk.Feel: Firm and springy when gently squeezed, with no liquid pooling on the plate.
02

Place the raw cashews in a small heatproof bowl and cover with hot water by about 2cm. Let them soak for at least 30 minutes while you continue with the other steps. The cashews should feel soft and yield easily when squeezed.

30mFeel: Cashews break easily between your fingers and feel pliable.
03

Place the basmati rice in a fine mesh strainer and rinse under cool running water until the water runs almost clear, about 1 minute. Transfer the rinsed rice to a bowl, cover with cool water, and let soak for 20 minutes. Drain well before cooking.

20mLook for: Rinsing water is nearly transparent by the end.
04

Peel the onion and chop it into an even 5mm dice. Aim for uniform pieces so they soften at the same rate during cooking.

5m
05

Peel and finely mince the 15g of garlic reserved for the sauce. The mince should be nearly paste-like so it dissolves into the sauce rather than leaving visible chunks.

3m
06

Peel the 15g of ginger reserved for the sauce by scraping with the edge of a spoon. Grate it finely on a microplane into a soft paste. Reserve it separately from the marinade ginger.

3m
07

In a wide mixing bowl, whisk together the plant yogurt, 10ml lemon juice, 10g grated ginger, 10g minced garlic, 4g garam masala, 3g kashmiri chili powder, 2g ground cumin, and 2g salt until smooth and evenly speckled with spice.

3m
08

Cut the pressed tofu into even 2.5cm cubes. Add the cubes to the marinade and toss gently with a silicone spatula until every surface is coated. Let the tofu marinate at room temperature for 25 minutes, or refrigerate for up to 4 hours for a deeper flavor.

25mLook for: Each cube is evenly tinted orange-red from the spices.Feel: Cubes feel tacky and slightly tackier than plain tofu.
09

Preheat the oven to 200°C (400°F). Line a rimmed baking sheet with parchment paper. Arrange the marinated tofu cubes in a single layer with at least 2cm between each piece to allow airflow. Bake for 25 minutes total, flipping once at the halfway point with a thin spatula, until the edges are deeply golden and the surfaces feel dry and lightly crusted. The tofu should be crisp on the outside and tender within.

25mLook for: Edges are golden brown with small darker spots; surface looks dry rather than glossy.Feel: Lightly crisp crust when pressed with a fingertip, with gentle give inside.
10

Combine the drained rice, 600ml water, 4g salt, the bay leaf, and the crushed cardamom pods in a small saucepan. Bring to a brisk boil over high heat, then immediately reduce to the lowest possible flame. Cover tightly with a lid and cook undisturbed for 15 minutes. Remove from the heat and let the rice rest, covered, for 10 minutes. Uncover, discard the bay leaf and cardamom pods, and fluff gently with a fork.

25mLook for: Each grain is fully elongated, separate, and steam rises steadily when the lid is lifted.Feel: Tender with a delicate bite, no hard starchy core.
11

Heat the 30ml of neutral oil in a large heavy-bottomed saucepan over medium heat until it shimmers. Add the chopped onion and a small pinch of the 8g of salt. Cook, stirring every minute or so, for 8 to 10 minutes until the onion is deeply golden, soft, and reduced by about a third. Lower the heat if the onion begins to brown too quickly at the edges.

10mLook for: Onion is translucent, then turns a uniform honey-gold with no white patches remaining.Feel: Soft and silky when pressed against the side of the pan.
12

Add the 15g minced garlic and 15g grated ginger to the softened onion. Stir constantly for 1 to 2 minutes until the mixture is intensely fragrant and the raw garlic bite has mellowed. Lower the heat if either begins to color, as burnt garlic will make the entire sauce bitter.

2mLook for: Paste loosens slightly and looks glossy.Feel: Spreads easily across the bottom of the pan with no sticking.
13

Add the 5g ground coriander, 4g ground cumin, 6g garam masala, 3g kashmiri chili powder, and 2g ground turmeric to the pan. Stir constantly for 45 to 60 seconds - the spices should smell aromatic and deepen in color but not darken to brown. If anything begins to scorch, lift the pan off the heat for a few seconds.

1mLook for: Spice mixture becomes a richer brick-red, with no dark flecks of burnt powder.Feel: Aroma is pungent and toasty without any acrid note.
14

Pour the 400g of crushed tomatoes into the pan and stir well, scraping up every browned bit from the bottom. Add the 8g salt and 5g coconut sugar. Bring the mixture to a gentle bubble, then reduce the heat and simmer uncovered for 12 to 15 minutes, stirring every few minutes, until the sauce has thickened enough to hold a line when you drag a spoon across the bottom of the pan and has darkened to a deep brick-red.

15mLook for: Sauce coats the back of a spoon and leaves a clean trail when scraped across the pan bottom.Feel: Thick enough to mound briefly when spooned, then slowly settle.
15

Drain the soaked cashews and transfer them to a high-speed blender. Add the 200ml of fresh water. Blend on high for 2 to 3 minutes, stopping to scrape the sides once if needed, until the cream is completely smooth, milky, and pourable like heavy cream. No grit should remain when a small spoonful is rubbed between your fingertips.

3mLook for: Cream is uniformly ivory with no flecks of cashew visible.Feel: Velvety and silky with no perceptible grit.
16

Pour the cashew cream into the reduced tomato base and stir until fully combined. Add warm water a tablespoon at a time (up to 100ml) until the sauce reaches the consistency of warm heavy cream - thick enough to coat the tofu but still loose enough to flow. Simmer gently for 5 to 8 minutes to meld the flavors and allow the sauce to thicken slightly. Taste and adjust with additional salt or a small pinch of coconut sugar if the sauce tastes sharp.

8mLook for: Sauce is homogenous and lightly steamy, with no separation between cream and tomato.Feel: Coats the back of a spoon smoothly without running off.
17

Add the baked tofu cubes to the sauce along with the 50g of softened vegan butter and the 4g of kasoori methi, which you should crush between your palms just before adding to release the aromatic oils. Fold gently with a silicone spatula so the tofu is evenly coated, then simmer for 2 to 3 minutes to warm the tofu through. Remove the pan from the heat and stir in the 15ml of lemon juice. The acid will brighten the entire dish without making it sour.

5mLook for: Tofu cubes are glossy and evenly enveloped in the orange-tinted sauce.Feel: Tofu is hot through and the sauce is thick enough to cling rather than run off.
18

Divide the basmati rice among four shallow bowls, shaping it into a small mound on one side. Spoon the tofu makhani alongside or gently over the rice. Drizzle each portion with a little of the 10g melted vegan butter if using, and scatter the chopped cilantro leaves over the top. Serve immediately while the sauce is silky and the rice is steamy.

5mLook for: Each bowl shows the contrast of white rice and orange-tinted curry, flecked with green herb.

Chef's Notes

  • Pressing the tofu thoroughly is the single most important step for this recipe - excess moisture prevents the marinade from clinging and steams the cubes during baking, leaving them soft instead of golden. If you do not own a tofu press, weighted books on a towel-wrapped block work just as well.
  • Blooming the ground spices in oil before adding any liquid is the technique that distinguishes a layered curry from a flat one. Keep the heat moderate and stir constantly so the spices toast rather than scorch; 45 to 60 seconds is usually enough.
  • Cashew cream provides the closest match to traditional makhani's silken mouthfeel. Coconut milk will work in a pinch, but its distinct flavor competes with the spice profile, so treat it as a backup rather than a true substitute.
  • Kasoori methi should always be crushed between your palms just before it is added to the hot sauce. This friction releases the volatile oils that give the dish its signature bittersweet aroma; skipping this small step is the most common reason a homemade curry tastes almost right but not quite.
  • The pinch of coconut sugar is not sweetness for its own sake. It neutralizes the tomato's natural acidity and balances the chili heat, mirroring the way a small amount of jaggery or honey functions in many traditional Indian gravies.
  • If the sauce breaks or looks grainy after adding the cashew cream, a brief whisk over low heat will bring it back to a velvety finish without altering the flavor.

Storage

Refrigerator: 4 daysStore curry and rice separately in airtight containers. Curry reheats more evenly when isolated from the rice.

Freezer: 2 monthsFreeze the curry only (without rice) in portioned containers. Thaw overnight in the refrigerator before reheating.

Reheating: Rewarm curry gently in a covered saucepan over low heat with a 30ml splash of water, stirring occasionally until heated through to 74°C (165°F). Reheat rice by steaming or microwaving covered with a few drops of water.

Troubleshooting

Tofu turns out pale and rubbery instead of golden and crisp

Cause: Tofu was not pressed long enough, the cubes were crowded on the baking sheet, or the oven temperature was inaccurate

Fix: Cannot be reversed once baked; serve with extra sauce and a generous herb garnish to draw attention away from the texture

Prevention: Press the tofu for a full 30 minutes, arrange cubes at least 2cm apart on the parchment, and verify your oven with a separate thermometer if browning is consistently weak

Sauce tastes sharp, tart, or acidic

Cause: The tomatoes were not reduced long enough, or the balance of salt and sugar is off

Fix: Stir in an additional 3 to 5g of coconut sugar and a pinch more salt, then simmer 2 to 3 minutes to meld; a small splash of cashew cream will also round out the acidity

Prevention: Reduce the tomatoes for the full 15 minutes until thick and darkened, then taste before finishing

Sauce is too thin and pools around the rice instead of coating the tofu

Cause: The cashew cream was added before the tomato base had reduced enough, or too much water was added during adjustment

Fix: Simmer the finished curry uncovered for 5 to 10 minutes to evaporate excess liquid, or stir in 1 tablespoon of cashew butter to thicken quickly

Prevention: Wait until the tomato mixture visibly coats the spoon before adding cashew cream, and add water only a tablespoon at a time

Curry is overwhelmingly spicy or hot

Cause: Too much kashmiri chili powder, or the household is sensitive to background heat

Fix: Stir in an additional 50ml of cashew cream and 1 teaspoon of coconut sugar, then add more baked tofu or cooked chickpeas to dilute the heat

Prevention: Start with half the chili powder in both the marinade and the sauce, taste the reduced tomato base, and adjust upward if desired

Cultural Context

Makhani-style cooking originates in the Punjab region of northern India, where tomato-based gravies are enriched with butter or cream and finished with kasoori methi, a hallmark of dishes like butter chicken and paneer makhani. This plant-based interpretation honors the same culinary logic: a long-simmered tomato base, dairy-rich mouthfeel from cashew cream, and the signature finishing of butter and dried fenugreek. The technique of marinating and roasting tofu before it meets the sauce is a contemporary twist that gives plant proteins the layered flavor traditional dishes achieve through long cooking of meat, while keeping the dish firmly within the spice logic of the original.

More Like This

Find your next meal

Dinner2,408Dessert759Side Dish506Appetizer477Salad371Soup371Condiment172Breakfast156Baked Good136Sauce122Lunch114Base73Brunch61Bread57Snack51Beverage41Preserve34Confection23