Line a strainer or large sieve with a thin, clean dishcloth or 3 layers of cheesecloth. Place over a large bowl.
Pour the milk into a large pot. Bring to a boil over medium heat, stirring regularly with a wooden spoon. As soon as the milk starts to boil, add the vinegar and stir gently until the mixture starts to separate and curdle. Remove from the heat.
Using a ladle, carefully transfer the curdled milk into the strainer. Sprinkle the curd with the salt. Let strain for 10 minutes.
Seal the dishcloth around the curd and squeeze over the pot to remove any excess liquid. Set the liquid aside for another use (see note). Return the curd (still wrapped in the dishcloth) to the strainer set over a bowl and weigh it down (with a heavy can of tomatoes, for example). Refrigerate for 1 hour. When ready to serve, remove the dishcloth and dice the cheese.
In a large skillet over medium heat, cook the spices in the butter until fragrant. Add the onion and cook for 5 minutes or until translucent. Add the garlic, ginger, chili pepper and tomato. Continue cooking until the vegetables are tender. Stir in the spinach and cook for 5 minutes or until wilted. Season with salt and pepper. Remove from the heat.
With a hand blender, coarsely chop the spinach mixture. Gently reheat the mixture, adding a little water to thin it out, as desired. Add the cubes of paneer to the skillet and cook for 5 minutes, stirring gently, until heated through. Serve with basmati rice and naan bread, if desired.
The excess liquid left behind after removing the curd can be used as a pickling liquid or to cook rice.
Paneer is an Indian cheese that can be found in some specialty shops or supermarkets. If unavailable, it can be replaced here with tofu.
Recipes with the "Healthy Pick" stamp have been evaluated by a registered dietitian member of the Ordre professionnel des diététistes du Québec.