Prepare the pasta: In a small pan, warm the milk and onion until almost boiling. Remove from the heat, leave covered to infuse for 10 mins, then strain. Cook the macaroni according to pack instructions until just soft, but still with a little bite. Drain in a colander, then run under the tap and stir to stop the pasta sticking together.
Heat oven to 190C.
To make roux, melt the butter in a pan. Once butter is foaming, add the flour, then cook, stirring constantly, for 1 min on a low heat.
Finish the sauce: Slowly stir the warm infused milk into the roux until smooth. Simmer for 3-4 mins, stirring often, until the sauce has thickened.