Prepare the Tofu
Wrap the tofu in a clean kitchen towel and set a heavy skillet on top. Press for 20 minutes, then tear or cut the tofu into 1 1/2-inch pieces.
About 20 min
Marinate
In a large bowl, stir together the yogurt, lemon juice, oil, ginger, garlic, garam masala, cumin, coriander, paprika, turmeric, and salt. Fold in the tofu until every piece is coated. Marinate for 30 minutes, or cover and refrigerate for up to 8 hours.
About 30 min
Roast the Tofu
Set a rack in the upper third of the oven and heat the oven to 450°F. Line a rimmed baking sheet with foil and brush it lightly with oil.
Arrange the tofu in one layer with space between the pieces. Roast for 20 to 25 minutes, turning once, until browned at the edges. Broil for 2 to 3 minutes for a little extra char.
About 25 min
Make the Sauce
While the tofu roasts, melt the ghee in a wide Dutch oven or deep skillet over medium heat. Add the onion and cook, stirring often, until soft and deep golden.
About 10 minAdd the ginger and garlic and cook for 1 minute. Stir in the garam masala, cumin, coriander, paprika, cayenne, and tomato paste. Cook until fragrant and the tomato paste darkens slightly.
About 2 minStir in the crushed tomatoes, water, and salt. Bring to a gentle simmer and cook uncovered until the sauce thickens. Stir in the cream and simmer for 5 minutes more. Taste and add salt if needed.
About 20 min
Finish
Fold the roasted tofu into the sauce and warm it for 3 to 5 minutes without stirring too hard. Sprinkle with cilantro and serve with basmati rice and naan.
About 5 min

