Cook pasta according to packet instructions. Drain and set aside.
Preheat the oven to 160 C.
Bring a pot of water to the boil and add the tomatoes. Blanch for 3-5 mins until the skins start to peel off. Run them under cold water and peel away the skins and discard. Add the tomatoes to a blender. Blend to a smooth purée.(Use the same pot for the sauce; no washing necessary.) Tomato sauce: add olive oil to the pot and sauté onions and garlic until lightly browned around the edges. Add tomato purée, oregano, chilli flakes, pepper and salt. Cook over a medium heat for 7-10 mins, stirring occasionally, until the sauce thickens slightly. Taste and adjust seasoning.
Spinach & paneer sauce: add spinach and chillies to a pan and toss for 2-3 mins until the spinach begins to wilt down.
(If using frozen spinach, do the same thing. If it leeches out too much water, squeeze out the excess moisture with your hand after it cools, and then add to the blender.)
Transfer the wilted spinach and chillies to a blender jar. Add paneer, milk and salt and blend it all together to get a smooth sauce. Taste and adjust seasoning.
Layer 1: Toss the cooked pasta with the spinach and paneer sauce. Transfer to your baking dish.
Layer 2: Pour the tomato sauce over the pasta in an even layer.
Layer 3: Dot the grated mozzarella over the tomato sauce.
Bake for 25 mins until the top is golden and crusty. Serve immediately.
Can be made up to 3 days in advance and refrigerated. Dot the mozzarella on top just before it goes into the oven in this case.