Preheat the oven to 200C/180C Fan/Gas 6. Lightly grease a 2 litre/3½ pint shallow ovenproof dish with butter.
Half fill a large saucepan with water and bring to the boil. Add the cauliflower florets and boil for 10-12 minutes, or until very soft. Drain and set aside.
Half-fill the same pan with water and return to the boil. Add the macaroni and cook for 8-10 minutes, or until al dente.
Meanwhile, melt the butter in a saucepan over a low heat, then whisk in the flour until the mixture forms a smooth paste. Cook, whisking constantly, for 30 seconds.
Gradually whisk in the milk a little at a time, bringing the mixture to a gentle simmer and waiting for it to thicken after each addition. Continue to cook, stirring constantly, until all of the milk has been incorporated and the sauce has thickened enough to coat the back of a spoon (about 6-8 minutes).
Stir in two-thirds of the cheese, then season with salt and pepper.
Add the cauliflower to the sauce, blend until smooth using a hand-held blender. Warm the mixture through gently, adding a little more seasoning or milk, as required. The finished sauce should have the consistency of pouring custard.
Drain the pasta and transfer to the ovenproof dish. Pour over the sauce and stir to combine. Sprinkle over the remaining cheese. Bake for 20-25 minutes, or until the top is golden-brown and the sauce is bubbling.