Heat oil and butter in a pan, once the oil becomes little hot add cumin seed, whole garam masala (cinnamon, cloves, big black cardamom, small cardamom, bay leaf) and sauté till the cumin seed becomes light brown.
Add finely chopped onion and cook it on medium flame till it becomes light brown.
Add grated ginger, crushed garlic and stir it for few seconds. Add finely chopped tomato and cook till the tomatoes become soft and mushy and all the water gets evaporated.
Add grated khoya, stir it well and cook it on medium flame till the oil starts leaving the sides of pan. Now add paneer cubes and all the spices (red chilly powder, garam masala, salt), sauté it on medium flame for 2-3 minutes. To make semi white gravy, do not add turmeric powder.
Lastly add milk and cook on medium flame till it starts boiling. You can adjust the consistency of the gravy as per your wish by adding water. I kept medium thick gravy.
Garnish with coriander leaves and serve hot with tandoori roti, naan, phulka or rice. You can also roast khoya for 2-3 minutes or till it become light brown by adding some ghee. You can also shallow or deep fry the paneer cubes.