Bring a large pot of salted water to a boil. Add the elbow macaroni and cook according to package instructions until al dente. Drain the pasta in a colander and set aside.
In a medium saucepan over medium heat, melt the butter. Once melted, whisk in the flour to create a roux, cooking for 1-2 minutes until golden.
Gradually add the milk, whisking continuously to prevent lumps. Continue to cook until the mixture thickens, about 5-7 minutes.
Reduce the heat to low, and stir in the shredded cheddar cheese, garlic powder, onion powder, salt, and pepper. Stir until the cheese is completely melted and the sauce is smooth.
Combine the cooked macaroni with the cheese sauce, stirring well to coat all the noodles evenly.
Sprinkle the grated Parmesan cheese over the top and mix well. If desired, transfer the cheesy noodles to a serving dish or individual plates.
Garnish with chopped parsley, if using, before serving.