Heat up a dutch castiron on medium heat, once hot, add oil followed by the ginger, garlic and green chilies. Saute for about 30 seconds.
Add onions and saute for 3 minutes.
Now add the red and green bell peppers. Season with salt. Stir well. Saute for about 4-5 minutes.
In the meantime, using a mortar and pestle or a coffee grinder grind your spices - cinnamon, cloves, peppercorns, cardamom and fennel seeds.
This is what you should have.
Add the grinded spices, along with turmeric, coriander powder, and red chili powder. Cook for about 1 minute.
Add the tomato paste.
Saute for about 3 minutes.
Now add 2 tbsp of butter.
Once the butter melts, add the flour.
Cook the flour and butter for about 2 minutes to form a roux. This will help thicken the sauce.
Now, SLOWLY pour the milk little by little. Do not add all the cold milk at once else your sauce will curdle.
Note how the sauce is getting thick. Reduce heat to very low.
In the meantime, season the boiling hot water with salt and cook the shells until al dente.
Here is your sauce. Make sure your heat is on very low. Let the sauce heat up on very low heat for about 5 minutes.
While the sauce heats up (not boil) grate the cheese. I used Gruyere and White Cheddar.
Add the cheese little by little to the sauce. Do not add the cold cheese at once to the hot sauce. Make sure your heat is very low.
Cook the sauce for a few minutes until nice and hot. Sauce is ready.
Drain the pasta.