Take a heavy-bottom pan and pour in the milk. Heat it on medium flame.
Once the milk comes to a boil, lower the heat to medium-low. Let it simmer and reduce slowly.
Stir every 3–4 minutes. Use a wide spatula if possible. It covers more surface and makes stirring easier. If you use a small spoon, the milk may stick or burn at the bottom.
After 40 minutes, the milk will become thicker and look slightly grainy. Don’t forget to scrape the bottom and sides of the pan.
At the 50-minute mark, it will look more grainy and dense.Note: Cooking time may vary depending on the shape and size of the pan. It also depends on the quantity you're making—whether it's half, double, or triple the recipe.
From this point, you need to stir more often and scrape the sides constantly.
Keep stirring and cooking until the mixture becomes solid and thick like halwa. You’ll notice it gets harder to stir — that means it’s ready.
Turn off the heat. This stage took me around 1 hour and 15 minutes.
Transfer the khoya to a clean bowl. Let it cool completely. As it cools, it will firm up even more.
Notes
Milk: Always use full-fat milk for best texture and rich taste. Low-fat milk won’t give the same results.
Use a heavy-bottom pan to avoid burning. Thin pans can cause the milk to stick or scorch. I prefer to use non-stick pan for making khoya.
Stir often, especially after it starts thickening. This prevents sticking and ensures even cooking.
Don’t rush the process. Keep the heat on medium-low for slow, even reduction.
Transfer to a bowl right away after turning off the heat. If left in the hot pan, it can overcook or burn.