Paneer is a fresh cheese often used in vegetarian Indian dishes, especially in the Punjabi region up into Nepal. It's vegetarian because it requires no rennet, only minimally processed milk and an acid. Once you get the hang of it, it's easy to make at home if you have a supply of raw or minimally pasteurized milk. I prefer the raw, as do most cheesemakers, but it's not available commercially in all places. Some Indian and Pakistani markets sell paneer that's either imported or made in house, and other fresh non-melting cheeses like leijpajuusto can be used, so you don't have to make it every time you want some palak or shahi paneer. But it does help. Wrapped in cheesecloth in plastic or a ziploc bag, this is best used fresh or within 2-3 days of making it.
About buying proper milk -- you want to stay away from ultra high pasteurized products, and find the closest thing to raw as possible. If the expiration date is within a week, and the milk is not old, you've found what you need. UHP milk will leave you with a soupy mess that, at best, can be turned into makeshift ricotta.
What you need:
1/2 gallon raw or minimally pasteurized milk
1/3 cup lemon juice mixed with 1/4 cup water OR 3 tsp citric acid dissolved in 1/2 cup of water
a colander or strainer
a large square of single layer cheesecloth, apx "18x18
a bowl of ice water
Start by lining the colander or strainer with cheesecloth and placing it over a large pan or bowl, assuming you want to keep the whey. Bring the milk to boil on the stovetop, constantly stirring so the bottom doesn't burn. After around 15-20 minutes of this the milk should start to "rise" -- watch carefully for this. Pour the lemon juice or citric acid into the mixture and stir gently, taking the pot off the heat. You should have sizeable curds, like very liquidy American cottage cheese. If the curds are small and not sticking to each other, add more lemon juice or citric acid. It's always better to keep more acid on hand than you need when making cheeses like this to aid in coagulation. Pour it out of the pot through the cheesecloth lined strainer and allow as much whey as possible to filter through, and give it about five minutes to settle in. Use this time to get your pot and stirring spoon cleaned or soaking, those leftover curds stick when they dry!
Tie each corner of the cheesecloth together and lift the strained curds up. I prefer to hang the cheesecloth over the sink for another ten minutes or so to let the curds come together while they're still quite hot; they shouldn't be sticking too hard to the cheesecloth. Once they've cooled for a few minutes, twist the top of the cheesecloth tightly so it coils into itself and you're left with a rounded, covered soft ball. Place it between two towels and put something heavy on top, like a ceramic plate or bottle of water, for at least 30 minutes. The longer you allow it to press, the firmer the cheese will be.
Dissolve a few tablespoons of kosher salt into the ice water, and place the pressed paneer into the cold water. Keep it in the refrigerator or somewhere cool for 1-3 hours, then remove it and pat it dry. This is when you can either slice it up and add it to a dish or put it in a ziploc bag for later use. When you're ready to use it, the cheesecloth should peel away easily without taking much (if any) curd along with it. Paneer is great to simmer in gravies and sauces because it absorbs flavors well and doesn't melt (although it can be overworked and start to crumble).