For the sauce
For the lasagna & filling
Warm the butter and olive oil in a large saucepan over medium heat, and sauté the garlic and shallots until translucent, about 2-3 minutes. Add the mushrooms to the pan and sauté until the mushrooms begin to shrink and give off juice (add a bit more oil if needed), about 3-5 minutes. Whisk in the flour, then immediately pour in the wine and continue whisking to incorporate. Whisk in the stock and allow the mixture to come to a simmer, stirring occasionally. Reduce the heat to low and whisk in the cream until everything is warmed through and incorporated. Remove from heat and set aside.
Sauté the spinach in the olive oil in a skillet over medium heat until it wilts, about 2-3 minutes. Pour off any liquid and set aside to cool. In a large mixing bowl, add cheeses, basil, parsley, artichoke hearts, egg and salt, stir to combine. Add the spinach in and mix thoroughly.
Prepare a deep 8 x 8 inch (20x20 cm) baking dish with pan spray. Add a thin layer of the mushroom sauce to the bottom of the pan. Top with a layer of pasta, and then smooth half of the filling over the pasta. Top the filling with another layer of pasta, and then add a thick layer of the mushroom sauce, being sure to get plenty of mushroom chunks spread throughout the layer. Add another pasta layer, then the rest of the filling mixture, then add one more pasta layer and top with mushroom sauce and sprinkle with the cheese.
Cover with foil and bake for 50 minutes, carefully removing the foil for the last 15 minutes of cooking. Let the lasagna cool for at least 20 minutes before slicing and serving.
