Bring 1.5 liters of fresh milk to a boil on high heat. Remove from heat immediately. Stir in 3 tablespoons of lemon juice and wait until curds separate from whey, forming large flakes.
Line a sieve with cloth. Pour the curdled milk into the sieve and let drain completely. Squeeze the cloth to remove excess whey. Press down with a saucepan or can and let sit for 2 hours. Remove paneer from cloth, wrap in foil, and refrigerate overnight.
Cut paneer into small cubes and dust with cornstarch. Heat 2 tablespoons of clarified butter in a non-stick pan on medium heat. Fry paneer cubes until light golden on all sides, about 2-3 minutes. Transfer to paper towels to drain.
Pour remaining 2 tablespoons of clarified butter into a large casserole with a lid and place on medium heat. Fry the chopped onions, garlic, and ginger for 3-4 minutes, stirring often. Add ground coriander, turmeric, chopped red chilli, and paprika powder, stirring constantly. Add diced tomatoes and cook for 10 minutes, stirring occasionally. Pour in 500 ml of hot water, bring to a boil, cover, and simmer on medium heat for 20 minutes, stirring occasionally.
Add frozen peas, salt, and fried paneer cubes to the sauce. If needed, add more hot water. Bring to a boil, then reduce heat to low and simmer for 15 minutes. Turn off heat, stir in garam masala, cover, and let rest for at least 1 hour before serving.
Sprinkle fresh chopped coriander on top before serving. Serve with rice.