There is something undeniably regal about shahi paneer — golden cubes of pan-fried cheese swimming in a velvety sauce perfumed with saffron, cardamom, and a whisper of rose water. This batch-prep version captures every bit of that Mughlai indulgence, with a luscious cream-and-yogurt sauce thickened with almond flour instead of the cashew paste and sugar found in restaurant versions. Each bite delivers that signature warmth from whole spices, a gentle sweetness from slow-cooked onions, and the unmistakable floral depth that only real saffron can provide.
With 46 grams of fat and just 7 grams of net carbs per generous serving, this shahi paneer is tailor-made for a ketogenic diet. The paneer itself contributes a solid 21 grams of protein, while the ghee, heavy cream, and yogurt keep your fat macros firmly in the ideal range. There are no hidden starches, no flour-based thickeners, and no added sugar — just real, whole-food ingredients doing what they do best.
Best of all, this recipe is designed for batch cooking. Make one pot on Sunday evening and you have four satisfying dinners portioned and ready to reheat throughout the week. The sauce actually improves as it sits, letting the saffron and cardamom deepen over a few days in the fridge. Serve it over cauliflower rice, alongside keto garlic naan, or simply eat it straight from the bowl — it is that good on its own.
Ingredients (serves 4)
For the saffron cream base:
- 1/2 cup (120ml) heavy whipping cream
- A generous pinch of saffron threads (about 20 strands)
- 1/4 cup (60g) full-fat plain yogurt (no added sugar)
- 2 tablespoons (14g) almond flour
For the shahi paneer:
- 14 oz (400g) paneer, cut into 1-inch cubes
- 2 tablespoons (28g) ghee, divided
- 1 small yellow onion (about 80g), finely diced
- 3 cloves garlic, minced
- 1-inch piece fresh ginger, finely grated
- 1 tablespoon (16g) tomato paste
- 1 teaspoon garam masala
- 1/2 teaspoon ground cardamom
- 1/2 teaspoon ground cumin
- 1/4 teaspoon ground white pepper
- 1/4 teaspoon ground nutmeg
- 1/2 teaspoon fine sea salt, plus more to taste
- 1/4 cup (60ml) warm water
- 1/2 teaspoon rose water (optional but traditional)
For garnish:
- 2 tablespoons (14g) sliced almonds, toasted
- Fresh cilantro leaves
- A few extra saffron threads
Instructions
Bloom the saffron. Warm 2 tablespoons of the heavy cream in a small bowl in the microwave for 15 seconds, or in a tiny saucepan over low heat. Add the saffron threads, stir once, and set aside for at least 10 minutes. The cream will turn a vivid golden-orange — this is your flavor base, so don't skip the blooming time.
Prepare the cream mixture. In a small bowl, whisk together the remaining heavy cream, yogurt, almond flour, and the bloomed saffron cream until smooth. Set aside.
Pan-fry the paneer. Heat 1 tablespoon of ghee in a large, deep skillet or Dutch oven over medium-high heat. Add the paneer cubes in a single layer — work in batches if needed to avoid crowding. Fry for 2 to 3 minutes per side until golden on at least two faces. Transfer to a plate and set aside. The golden crust is essential for both texture and flavor.
Cook the aromatics. Reduce heat to medium and add the remaining 1 tablespoon of ghee to the same pan. Add the diced onion and cook, stirring occasionally, for 5 to 6 minutes until softened and just beginning to turn golden at the edges. Add the garlic and ginger, stirring constantly for 60 seconds until fragrant.
Build the sauce. Stir in the tomato paste, garam masala, cardamom, cumin, white pepper, nutmeg, and salt. Cook for 1 minute, stirring to coat the onions evenly with the spice mixture. The paste will darken slightly and become very aromatic.
Add the cream mixture. Pour the saffron cream mixture into the pan and stir well, scraping up any browned bits from the bottom. Add the warm water and stir to combine. Bring to a gentle simmer — do not let it boil vigorously or the yogurt may split. Reduce heat to medium-low and let the sauce simmer for 5 to 6 minutes, stirring occasionally, until it thickens enough to coat the back of a spoon.
Finish with paneer. Gently fold the pan-fried paneer cubes into the sauce. Simmer on low heat for 3 to 4 minutes so the paneer absorbs some of the sauce's flavor. Stir in the rose water if using — just a tiny amount adds an authentic Mughlai fragrance without tasting soapy.
Taste and adjust. Check the seasoning. Add more salt if needed. The sauce should be creamy, deeply spiced, and slightly sweet from the slow-cooked onions and saffron.
Garnish and serve (or portion for meal prep). Top with toasted sliced almonds, fresh cilantro, and a few saffron threads. If batch prepping, let the curry cool completely before dividing into four airtight containers. Refrigerate for up to 5 days.
Reheat gently. When ready to eat, reheat a portion in a covered skillet over medium-low heat for 4 to 5 minutes, adding a splash of water or cream if the sauce has thickened too much. Alternatively, microwave for 90 seconds, stirring halfway through.
Nutrition per Serving
| Nutrient | Amount |
|---|---|
| Calories | ~540 kcal |
| Fat | ~46g |
| Protein | ~21g |
| Total Carbs | ~9g |
| Fiber | ~2g |
| Net Carbs | ~7g |
Nutrition values are approximate and based on the stated ingredients and portions. Actual values may vary depending on specific brands and ingredient sizes used.
Tips & Variations
Toast your almonds properly. Spread the sliced almonds in a dry skillet over medium-low heat and shake the pan frequently for 2 to 3 minutes until they turn light golden and smell nutty. They go from perfect to burnt in seconds, so stay close. Toasted almonds add a crucial textural contrast to the silky sauce, and they hold up well through several days of storage.
Use block paneer, not crumbled. For this recipe, firm block paneer works far better than soft or crumbled varieties. Look for brands that hold their shape when fried — Indian grocery stores typically carry the firmest options. If your paneer is very soft, press it between paper towels under a heavy plate for 15 minutes before cubing. Firm paneer gives you those satisfying golden edges that are the hallmark of a great shahi paneer.
Watch for hidden carbs in store-bought spice blends. Some pre-mixed garam masala brands add sugar, flour, or maltodextrin as fillers. Always check the label — a proper garam masala should contain only whole ground spices. If in doubt, make your own by grinding equal parts cinnamon, cardamom, cloves, black pepper, and cumin. This small step can save you 1 to 2 grams of hidden carbs per serving.
Turn it into a complete keto dinner bowl. Serve each portion over 1 cup of cauliflower rice (adds roughly 3g net carbs) with a side of sautéed spinach in ghee. You can also pair it with keto garlic naan for a more indulgent meal. For extra fat, stir a teaspoon of butter into each reheated portion — it melts into the sauce beautifully.
Make it richer with a mekhani twist. For an even more decadent version, replace the warm water in step 6 with an additional quarter cup of heavy cream. This pushes the fat content higher and creates a sauce so thick and luxurious it barely moves when you tilt the pan. Keep in mind this adds about 50 calories and 5 grams of fat per serving, which is perfectly fine if your daily macros allow it.