Bring a medium pot with 4 cups of salted water to a rapid boil. Add pasta in and boil for 7 minutes. Drain pasta, reserving ½ cup of the pasta water, and set aside.
While you are cooking the pasta, heat another large pot over medium-high heat and add 1 teaspoon of cooking oil. Add onions and ginger-garlic paste and sautée for 5 minutes until slightly brown.
Add the tomatoes and salt and cook down for another 3-4 minutes until they break down and thicken. Stir in all the spices, including the chili powder to your spice preference and the flour. Stir for another 3 minutes until sauce thickens further.
Whisk in the milk into the sauce. Bring to a simmer while you continue to whisk. Once the sauce is thick enough to coat the back of a spoon stir in the bag of cheese.
Preheat your broiler. Mix the cooked pasta, and pasta water, into the sauce and stir to incorporate and add more salt if needed. Then pour the pasta and cheese sauce into a 9-inch oven proof dish.
Sprinkle the breadcrumbs and drizzle with 1 teaspoon of oil. Place the dish into the oven and broil for 5-8 minutes until breadcrumbs look toasted and golden. Allow to rest for a few minute before serving.