Wring spinach dry in a clean dishtowel. Separate with fingers to loosen.
Bring a large pot of water to a boil for the pasta.
Place a rack in the lower third of the oven and preheat broiler.
Heat the olive oil, a turn of the pan, over medium to medium-high heat. Melt butter into oil; when it foams, add the onions and garlic. Season with salt and pepper, and stir 3-5 minutes to soften. Stir in flour 1 minute or so. Whisk in milk and let thicken; season with nutmeg to taste and reduce heat to low to keep warm.
Salt boiling water and cook shells to al dente. Reserve 1/2 cup starchy liquid and add to milk sauce to thin it a bit. Add spinach to pasta pot to heat, stir then drain pasta and spinach and toss with sauce; adjust salt and pepper to taste. Arrange in a casserole dish and dot with ricotta cheese mixed with lemon zest and thyme. Top with mozzarella and grated cheese, and broil until brown and bubbly. Serve immediately.