2 tablespoons olive oil
1/2 cup chopped onion
8 ounces fresh mushrooms, sliced
1 teaspoon minced garlic
1 10 ounce package frozen chopped spinach, thawed and squeezed dry
8 tablespoons butter, divided
5 tablespoons all-purpose flour
3 cups milk
3 cups shredded mozzarella cheese
1 1/4 cups grated Parmesan cheese, divided
1 1/2 teaspoons salt
1 16 ounce package elbow macaroni, cooked according to package instructions
1 cup fresh bread crumbs
Preheat oven to 350 degrees. Lightly grease a 13 x 9 x 2-inch baking dish; set aside.
In a large saucepan, melt 5 tablespoons butter over medium heat. Sprinkle flour over melted butter. Cook, stirring constantly, for 3 minutes.
Gradually add milk, whisking to combine. Cook over medium heat, whisking constantly for approximately 15 minutes, or until mixture is thickened. Remove from heat. Add mozzarella, 1 cup Parmesan, and salt, stirring until melted.
Spoon macaroni into a large bowl. Pour cheese mixture over macaroni. Add spinach mixture; stir. Spoon into prepared baking dish.
Bake for 20 minutes.
Meanwhile, in a small bowl, combine fresh bread crumbs, remaining 3 tablespoons melted butter, and remaining 1/4 cup Parmesan cheese. Remove macaroni from oven and sprinkle with bread-crumb mixture. Return to oven and bake for 5 minutes, or until top is lightly browned.