Let the milk come to a boil, stir often so that it doesn’t stick to the bottom of the pan.
Once the milk has come to a boil, turn off the heat and start adding vinegar (or lemon juice), little at a time.
At one point, the milk will curdle and you will see the whey separate. At that point, stop adding the curdling agent and wait for 5 minutes so that the milk curdles completely.
Drain the curdled milk into a muslin cloth. Rinse the paneer with cold water so that the final paneer doesn’t have any taste of vinegar.
Bring the ends of muslin cloth together and squeeze as much water as you can.
Then flatten the paneer (wrapped inside the muslin cloth) and place it on a flat surface. Then place a heavy object on top for it to set. I placed a plate and then placed mortar & pestle on top. Leave it undisturbed for 1 to 2 hours.
Once the paneer is set, remove it carefully from the muslin cloth and cut into cubes. Use paneer in any of your favorite recipes.
Notes
I prefer using vinegar to curdle the milk as I feel it results in a more solid block of paneer.
Start by adding only 1 teaspoon of the curdling agent. Add 1 more teaspoon only if the milk doesn’t curdle and add the remaining 1/2 teaspoon only if it still doesn’t curdle.
For creamier paneer, add 1/4 cup heavy cream to the milk while boiling it.