Preheat the oven to 375°F and coat a small rimmed baking sheet with nonstick spray.
Cut a thin slice from both the stem and root end of the onions, then cut in half crosswise and peel. Pop out the centers leaving the outer 3 rings in tact and arrange the onion halves on the prepared baking sheet.
Cover the holes left in the bottom of the onion halves by cutting appropriately sized pieces from the onion you removed and laying them across the opening. Brush the onion halves with about 1 tablespoon of the olive oil, season with salt and pepper and pre-bake for 8 to 10 minutes.
While the onion shells bake, dice the onion you removed from the shells. Heat the butter and 1 tablespoon of olive oil in a large frying pan over medium heat.
Once the butter has melted, add the diced onion and sauté until soft and translucent, 4 to 5 minutes. Sprinkle with the flour and continue cooking until well blended and light gold in color.
Add the mushrooms and continue cooking until they are lightly browned, stirring often, 3 to 4 minutes. Add the spinach, 1 cup at a time, waiting until each addition has wilted before adding more.
Stir in the cream and cook until all liquid has evaporated and the mixture has a creamy consistency. Season to taste with salt and pepper, then spoon into the onion halves.
Top each onion with a slice of cheese and bake until the cheese is browned and bubbly, 10 to 12 minutes.
Transfer to a serving plate and garnish with chopped scallions if desired.