Cook bacon in a pan on the stovetop over medium heat until crispy. Drain the bacon on paper towels, then chop and set aside.
While the bacon is cooking, chop your onion into thin slices. Without removing the bacon grease from the pan, turn the heat to medium-low and add the onions. Season with a pinch of salt and cook slowly until the onions are golden-brown.
Remove onions from pan and set aside. Add the spinach and cook until just wilted. Remove bacon grease.
Spread mayonnaise over one side of each slice of bread, covering completely.
With the pan on medium heat, add one slice of bread mayo-side down. Layer the slice of bread with fresh mozzarella. Next, add the caramelized onions and bacon. Top with swiss cheese. Layer on the tomato and spinach, then swiss cheese again. Top with the other slice of bread, with the mayo on the outside of the bread.
When the bread is golden brown, carefully flip the sandwich so that the mayo side is on the pan. Cook until the cheese is melted and the bread is golden brown. Enjoy!