Heat a large skillet over medium-high heat. Add the olive oil, spinach and scant 1/2 teaspoon salt. Saute until the spinach has completely wilted. Transfer the spinach to a strainer set over a bowl. Cool to room temperature. When the spinach is cool enough to handle, squeeze out as much liquid as possible.
Roughly chop the spinach and add it to a medium bowl. Add the ricotta, mozzarella, Parmigiano-Reggiano, 1/4 teaspoon salt and 1/4 teaspoon pepper. Stir to combine and set aside.
Lay the sliced bread on a clean work surface. Coat the top of each slice with butter. Heat a large skillet over medium heat. Lay 4 of the slices in the skillet, butter-side down. Scoop about 1/3 cup of the ricotta mixture onto each slice. Spread the mixture evenly to cover the whole slice, then top with the other slices of bread, butter-side up. Cook until the first side is golden and toasted, 2 to 3 minutes. Carefully flip the sandwiches and cook until the bread is toasted and the cheese is melty, an additional 2 to 3 minutes.
Transfer the sandwiches to a clean work surface and let them cool for 1 minute before slicing.