Preheat oven to 400°F (200°C) and grease a casserole dish or cast-iron frying pan with butter or oil.
Boil pasta in boiling salted water, according to the package directions; drain and set aside.
Steam cauliflower florets over boiling salted water in a double boiler (or steamer insert) until fork tender. Transfer half of the steamed cauliflower into a blender or food processor and purée with the stock until smooth. Chop remaining cauliflower florets into smaller florets.
In a large saucepot, melt butter over medium-low heat until foamy. Add onion and garlic and cook 3–5 minutes until softened.
Stir in flour and continue to cook, while stirring, for 3 minutes.
Slowly whisk in milk to prevent lumps from forming, whisk in cauliflower purée and continue to simmer over medium heat, stirring occasionally until thickened, about 3–5 minutes.
Whisk in the Dijon, cayenne, paprika and nutmeg. Add the grated cheese and keep on low heat until melted. Season with salt and pepper.
Fold in the cooked pasta and remaining chopped cauliflower into the cheese sauce. Spoon into a greased dish.
Sprinkle Parmesan overtop and scatter with halved tomatoes if using. Bake approximately 20 minutes or until bubbling and browned on top.