Bring about 8 -10 cups of water to boil in a large pot on the stove-top, over high heat. Once boiling, add a generous sprinkling of salt to the pot and add the pasta. Cook pasta for 2 minutes less than recommended on the package, or to just al dente. Drain well and rinse with cold water to stop the pasta from cooking further. *While water is boiling and pasta is cooking, you can start your cheese sauce.
For the cheese sauce: In a large saucepan, melt the butter over medium heat. Whisk in the flour and continue to whisk and cook for about 2 minutes.
Very slowly add the milk, a little at a time, whisking constantly. Once all the milk has been added, cook, stirring frequently until the sauce thickens, about 8-10 minutes. (Don't rush this step! The mixture will not get super thick, but you will notice it thicken to the point where it will nicely coat the back of a spoon after 8-10 minutes of cooking and stirring.)
Remove the saucepan from the heat. Add the crumbled/grated cheese, salt, chili powder and garlic powder. Stir until the cheese is melted and all the ingredients are incorporated, about 3 minutes. (If the cheese isn't melted completely after about 3 minutes, you can put the pan back on low heat and stir until it is melted). Set aside for a minute while you wait for the pasta to cook.
Preheat oven to 350F (175C) with rack in the centre of the oven. Oil or butter an 8-inch square baking dish, an 8-inch cast-iron skillet or individual baking dishes.
Once the pasta is cook, drain, rinse with cold water and drain well again. Add it to the cheese sauce and mix gently, but thoroughly. (It might look like too much sauce/too little pasta, but trust me, it will all be good in the end). Spoon or ladle the mixture into a prepared baking dish or individual dishes. Sprinkle the top of each with either the Cheese/Chili topping ingredients or mix together the panko/breadcrumbs with the melted butter and scatter over-top.
Bake in the preheated 350F (175C) oven uncovered for 20 to 25 minutes, or until the sauce has bubbled up around the edges and the top has a nice golden crust. Let sit for a few minutes before serving.
If you don't have a scale to weigh out the macaroni, it is about 2 cups worth. Note that this measure will only work for macaroni and probably not a larger pasta shape. Weighing is recommended. It is important not to use too much pasta, or you will upset the pasta to sauce ratio.
Look for cheese labelled "Mature", which is always white cheddar and sold in smaller blocks in the gourmet food section. Add to that a nice "Sharp" cheddar cheese. Again, it will usually say Sharp right on the label. It might be white or orange in colour.
More tips ...Always start with a block of cheese and grate it yourself. Pre-shredded cheese if often coated with an anti-clumping agent, which can affect the quality of your finished sauce.To ensure your macaroni doesn't get too soft, be sure to cook it 2 minutes less than you normally would, about 8 minutes. Rinsing well with cold water after draining will stop the cooking process and will also ensure your pasta doesn't get too soft.When crumbling your cheese, don't leave the crumbles too large. They need to melt by only the residual heat from the sauce. This process of turning off the heat, then adding the cheese to melt slowly helps to ensure the cheese sauce doesn't become grainy and is the secret to a smooth, creamy sauce for your macaroni and cheese!Add a bit more salt if you need to. Taste your cheese sauce before adding the pasta and add a bit more salt if you think it needs it. Proper salting makes all the flavours here really shine.Be sure to read the notes above the recipe card, for more tips for making this recipe! You will also find Step-by-Step photos and a Recipe Video, showing all the steps to make this recipe.