In a medium-sized saucepan set over medium heat, melt butter, then add shallots and cook for three minutes, stirring frequently.
Add flour, cook two minutes, then whisk in milk and bring to a boil. Reduce heat to medium-low and simmer until sauce is thick enough to coat the back of a spoon, about five minutes, stirring frequently. Add nutmeg, basil and Parmesan and whisk until smooth. Keep sauce warm.
In a large skillet set over medium-high heat, add olive oil and melt butter, then add mushrooms and sauté until liquid has evaporated and mushrooms have started to caramelize, about ten minutes, stirring occasionally.
Stir in spinach and garlic and cook until spinach has wilted and garlic has softened, about five minutes more.
Spread one-third of the reserved béchamel sauce in the bottom of a buttered 9x13-inch baking dish, and then arrange four lasagna noodles on top.
Spoon half of the mushroom-spinach mixture evenly on top of noodles, then layer with half of the buffalo mozzarella.
Repeat layering one more time ending with béchamel on top.
Sprinkle grated mozzarella evenly on top of the lasagna, cover with a piece of buttered parchment paper followed by a piece of aluminum foil and bake in a preheated 375°F oven for one hour.
Remove foil and parchment from lasagna, increase oven temperature to 500°F, and bake until top is golden, about 15 minutes more.
Transfer lasagna to a wire rack and let cool 20 minutes before serving.