Preheat the oven to 180 ̊C, gas mark 4. Roughly chop the broccoli and cook in a large pan of boiling salted water for 2 minutes, drain and set aside. Put the butter in the dry pan and set over a medium-low heat. Add the chopped shallots and sauté for 5 minutes, until starting to soften.
Add the flour, stir for 1-2 minutes until thickened, then gradually whisk in the milk until smooth. Cook for 5 minutes, stirring, until thickened, then stir in the single cream. Bring back to the boil and season.
Add the broccoli and spinach to the sauce and mix together. Pour into a 1.3 litre ovenproof dish. In a small bowl, mix together the breadcrumbs and gruyère, then scatter over the vegetables.
Drizzle with the oil, place on a baking tray and bake for 30 minutes, until bubbling and golden on top. Leave to stand for 10 minutes before serving.