Creamy Vegan Saag Paneer (With Tofu) Recipe

Browned, marinated cubes of tofu are stirred into a flavorful pot of creamy spiced greens.

A metal dish filled with vegan saag paneer made with tofu.

Serious Eats / J. Kenji López-Alt

Why It Works

  • Marinating the tofu with lemon juice and miso gives it a tart, umami-heavy flavor that mimics the flavor of fresh paneer cheese.
  • Using a mix of spinach and heartier, more flavorful greens, like arugula or mustard greens, packs in extra flavor.
  • Cauliflower, simmered in nut milk and puréed into a creamy sauce, adds ample body and richness to the spinach, without help from any dairy.

Saag paneer—greens cooked with fresh cheese curds in a creamy sauce—has always seemed sort of like Indian Food 101 to me. It's on every Indian-restaurant menu in the US, it's made from ingredients we're familiar with, and, more often than not, it's only mildly spiced. While I've eaten a good deal of more aggressively flavored bowls, and have seen writing about and recipes for versions made in a starker, cream-free way, there's still something pleasantly comforting about the richer, subtler version I grew up eating.

Creamy vegan saag paneer, ready to sereve with naan and chana masala.

Serious Eats / J. Kenji López-Alt

The other wonderful thing about saag paneer is that, in my experience, it's almost universally loved by vegetarians and meat-eaters alike. But what if we wanted to make a completely dairy-free version, so that vegetarians, meat-eaters, and vegans can all enjoy a meal together? I knew there'd be difficulties along the way, but the concept was so appealing that I couldn't turn down the challenge.

A Pan-eerie Resemblance

I decided to tackle the hardest part of the recipe first: the paneer. Paneer is a fresh cheese that has a uniquely dense, almost rubbery texture and a salty, tangy, umami-heavy flavor. Store-bought vegan cheese substitutes are almost never a great option, so I instead tried out a few different recipes I found online for tofu-based paneer substitutes. The most successful were the ones that combined well-drained extra-firm tofu with a flavorful citrus-based marinade—like this one from Food52—but none of them had that umami flavor or richness I was looking for.

The solution was to add a bit of miso paste and vegetable oil to the mix. Not only did whisking them together along with lemon juice and zest produce a creamy, emulsified marinade, it also helped the tofu cubes brown better when I tossed them in the oven for color. The resulting cubes are delicious when eaten on their own, though not perfectly paneer-like, but I figured: Toss them with a flavorful spinach base, and nobody is going to complain.*

*Let's be honest, though—there's always someone who complains. The trick is to remind yourself that you're the one eating the delicious spinach and tofu, not them.


The start of my spinach base was a snap. I've been making saag paneer for years, so I have a technique that I've fine-tuned through trial and error. I start by heating some fat in a saucepan, adding some finely grated or minced garlic, ginger, and chiles as it starts to shimmer. As soon as that garlic and ginger take on a hint of color and let off a sweet aroma, I add some spices. Some recipes go hog wild on the spices, but I like to keep them dialed back just a bit, using only cumin, coriander, turmeric, and a single crushed cardamom pod, all of which I add to the hot fat to bloom and develop their flavor.

Garlic, ginger, and chiles are cooked in a saucier.

Serious Eats / J. Kenji López-Alt

Next, in goes the spinach. This is where I thought my recipe could use some tweaking.

I tried a number of different spinach varieties, including baby spinach just for the sake of completeness. (I do not recommend baby spinach for cooking, since it turns mushy; save it for salads.) In the past, I've found that the best variety to use is mature curly spinach, which you can often find in the bagged-greens section of the supermarket. But since I moved out west to the Bay Area, I've rarely seen it, so the best I can do is bunches of flat-leaf spinach or frozen curly spinach.

Chopped fresh spinach is added to the pan.

Serious Eats / J. Kenji López-Alt

Neither option is great. Flat-leaf doesn't have the dark green color or flavor of curly, and frozen spinach can be tough (though it'll do in a pinch). So how could I get more flavor into my greens?

As is so often the case, the inimitable Felicity Cloake has done a lot of the backbreaking research work for me. Her articles are a wealth of great links and resources, and they gave me a clue as to how to solve my spinach issues. She points out that saag paneer is actually not necessarily made with spinach. Palak is the word for "spinach," but saag is a more generic word for "greens." This got me thinking: If the spinach I'm getting isn't flavorful enough, why not improve the dish with other, more flavorful greens?

I took a similar approach in my spinach manicotti recipe by replacing half the spinach with arugula, and it worked a treat then. It turned out equally fantastic in my saag paneer. I'd recommend a combination of spinach, arugula, and/or mustard greens, though I bet you can make delicious variations with just about any medium-tender green.


Most veganized versions of saag or palak paneer simply use boxed nut milks, like cashew or almond. This works okay, but it never delivers the rich creaminess that I expect in a great saag paneer. It's simply not quite thick enough.

If you were a fan of Top Chef back during season 1, you may remember my pal Harold Dieterle snagging the win in the series by making a version of creamed spinach that he bound with puréed sunchokes. I always loved that idea (and the version he served in his now-shuttered restaurant Perilla), so I decided to see how it would work in my saag paneer. Rather than using sunchokes, which have a very distinct flavor and are available only seasonally, I instead used cauliflower, which I simmered in almond milk until completely tender before blending into a smooth, creamy purée.

Once added to my greens base and folded with the browned tofu cubes, it felt like exactly what the dish needed, adding a wonderful creaminess and rich texture without distracting from the flavor I'd built up with the aromatics and spices. For all you vegans who long for the flavor and texture of creamed spinach, this may be just the answer you're after.

Overhead view of creamy vegan saag paneer in a serving vessel, flanked by a plate of naan.

Serious Eats / J. Kenji López-Alt

March 2017

Recipe Facts



Prep: 5 mins
Cook: 45 mins
Active: 40 mins
Total: 50 mins
Serves: 4 to 6 servings

Rate & Comment


  • 12 ounces (350g) extra-firm tofu

  • 1 tablespoon (15g) yellow miso paste

  • 3 tablespoons (45ml) lemon juice, divided, plus 1 tablespoon (5g) zest, from 2 to 3 lemons

  • 3 tablespoons (45ml) vegetable oil, divided

  • Kosher salt and freshly ground black pepper

  • 6 ounces almond, soy, rice, or cashew milk (2/3 cup; 170ml)

  • 6 ounces cauliflower florets or peeled sunchokes (170g; about 1/3 of a small head of cauliflower)

  • 4 medium cloves garlic (about 20g), finely minced

  • 1 (1-inch) knob ginger (about 20g), peeled and finely minced

  • 1 to 4 green or red Thai chiles (depending on your heat preference), stemmed and finely minced

  • 1 teaspoon ground coriander seeds

  • 1 teaspoon ground cumin seeds

  • 1 teaspoon ground turmeric

  • 1 cardamom pod, smashed

  • 8 ounces (225g) mature spinach, curly if available (see notes)

  • 8 ounces (225g) arugula or mustard greens, tough mustard green stems removed and discarded (see notes)


  1. For the Tofu "Paneer": Adjust oven rack to center position and preheat oven to 375°F (190°C). Press tofu firmly between paper towels to remove excess moisture. Cut into 1 1/2–inch cubes and set aside. In a medium bowl, whisk together miso paste, 2 tablespoons (30ml) lemon juice, lemon zest, and 1 tablespoon (15ml) oil. Season generously with salt and pepper. Add tofu and toss to coat. Spread tofu evenly over a foil-lined rimmed baking sheet. Place in oven and bake until golden brown, about 20 minutes. Sauce may darken a little against the foil; this is fine. Set tofu aside.

    Collage of marinating and browning tofu cubes.

    Serious Eats / J. Kenji López-Alt

  2. Meanwhile, for the Cauliflower Purée: Combine nut milk and cauliflower in a small saucepan. Season with salt and bring to a simmer. Cook until cauliflower is tender, about 10 minutes. Purée mixture using a hand blender or countertop blender. Set aside.

    Collage of simmering and puréeing cauliflower with nut milk and then stirring the mixture into the saag paneer.

    Serious Eats / J. Kenji López-Alt

  3. For the Spinach: Heat remaining 2 tablespoons (30ml) vegetable oil in a large saucepan or saucier over medium heat until shimmering. Add garlic, ginger, and chiles and cook, stirring, until fragrant and lightly browned, about 1 minute. Add coriander, cumin, turmeric, and cardamom pod and cook, stirring, until fragrant, about 30 seconds. Add spinach and arugula or mustard greens one handful at a time, stirring and adding more as the greens wilt (see notes).

  4. Reduce heat to low and cook, stirring occasionally, until greens are fully wilted, about 5 minutes. Stir in cauliflower purée and continue to cook until greens are very tender, about 5 minutes longer. Stir in tofu cubes and heat through. Stir in remaining lemon juice, season with salt, adjust consistency with a little water if necessary, and serve.

Special Equipment

Countertop blender or immersion blender, rimmed baking sheet


Mature curly spinach works best for this dish, as it has a more robust flavor and more tender texture when braised. Flat-leaf spinach will do. Avoid baby spinach, which turns mushy when cooked. If you can't find mature fresh spinach, you can also use frozen spinach: Defrost and drain it well, then add it all at once in Step 3, rather than a handful at a time. If you prefer, you can use 100% spinach instead of a combination of spinach and arugula or mustard greens.

Read More

Nutrition Facts (per serving)
160 Calories
11g Fat
9g Carbs
9g Protein
Show Full Nutrition Label Hide Full Nutrition Label
Nutrition Facts
Servings: 4 to 6
Amount per serving
Calories 160
% Daily Value*
Total Fat 11g 14%
Saturated Fat 1g 6%
Cholesterol 0mg 0%
Sodium 353mg 15%
Total Carbohydrate 9g 3%
Dietary Fiber 3g 12%
Total Sugars 3g
Protein 9g
Vitamin C 32mg 159%
Calcium 285mg 22%
Iron 4mg 20%
Potassium 537mg 11%
*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.)