Two heads of cauliflower (6 1/2 pounds total), cored
2 cups dry Champagne
2 cups chicken stock or low-sodium broth
3 garlic cloves, lightly smashed
2 large thyme sprigs
Salt and freshly ground white pepper
2 tablespoons unsalted butter
1/4 cup all-purpose flour
1 cup whole milk
1/2 pound Gruyère cheese, shredded
Preheat the oven to 400°. Set the heads of cauliflower in a 10-by-16-inch glass or ceramic baking dish. Add the Champagne, stock, garlic and thyme to the baking dish and season the cauliflower with salt and white pepper. Cover with foil and roast for 1 hour and 40 minutes, or until tender, basting with the pan juices every 30 minutes.
Preheat the broiler. Broil the cauliflower for 5 minutes, or until golden brown, shifting the dish as necessary. Strain the pan juices and reserve 2 cups. Keep the cauliflower warm.
Melt the butter in a large saucepan. Add the flour and whisk over moderate heat for 1 minute. Whisk in the 2 cups of pan juices and the milk; whisk until smooth. Add the cheese and cook, whisking frequently, until the sauce is thickened, 5 minutes. Season with salt and white pepper. Pour the sauce over the cauliflower and serve.
The cauliflower and the cheese sauce can be refrigerated separately overnight. Reheat before serving.