Pour the milk into a large pot and slowly bring to barely simmering over medium-low heat. Stir often to make sure the bottom isn’t scalding.
When the milk is starting to foam and steam, remove the pot from heat and stir in the lemon juice. You should start to see curds forming almost immediately.
Cover and let stand for 10 minutes or so until the curds completely separate from the yellowish whey.
Pour the curds into a cheesecloth-lined colander and lightly rinse to remove any lemon flavor. Alternatively, if you’re like me and totally forgot to check if you had cheesecloth before starting, drain as well as you can, rinse & drain again, and scoop the curds into a clean dishtowel.
Twist and squeeze the cheesecloth or dishtowel to remove as much liquid as possible.
Open the towel, sprinkle the paneer with salt, and wrap again.
Set the wrapped curds on a large dinner plate and press into a flat shape. Set another plate on top to weigh it down – I often balance cans on top for additional weight.
Refrigerate for at least 15 minutes or up to an hour. The cheese will set while you’re beginning the palak.
Boil 3 cups of water in a large bowl on the stove or in the microwave. Add the spinach to the hot water, give it a quick stir, and cover for 2-3 minutes.
Strain the spinach and rinse with ice cold water to stop cooking and preserve color.
Combine the spinach, green chiles, garlic, and ginger in a food processor and pulse until smooth.
Melt the butter in a large pan on the stove. When hot, add the cumin and let it sizzle.
Sauté the onions until translucent, then add the garlic and sauté for a couple more minutes.
Add the tomato and let cook until soft, then add the chili powder and turmeric.
Slowly add the spinach puree and mix well.
Simmer for 7-10 minutes until the spinach is fully cooked and the sauce has thickened.
Season with lime juice, garam masala, and salt to taste.
Stir in bite-size cubes of paneer and let cook for a couple minutes until soft.
Remove from heat and stir in cream.