Cook bacon in a medium skillet over medium heat until crisp; remove with a slotted spoon to a paper towel to drain.
Discard all but 1 tablespoon of the bacon fat remaining in the skillet. Add 4 tablespoons butter and melt. Add the onion, garlic, salt, black pepper and crushed red pepper. Cook, stirring as needed, until the onion is very soft, about 10 minutes. Add the artichokes and cook for 2 minutes longer. Add 1 bag of spinach and cook until wilted, about 2 minutes; then add the second bag and cook, stirring as needed, for 4 minutes until the spinach is tender and the flavors have blended. Remove from the heat.
Set a strainer over a bowl and add the spinach-artichoke mixture. Allow the excess liquid to drain, about 5 minutes.
In a medium mixing bowl, combine the three cheeses. Add the warm spinach mixture and stir until combined and the cheese has begun to melt. Stir in the bacon.
To assemble: Evenly spread a packed 1/2 cup of filling between 2 slices of bread. Butter each side of the sandwich with about 1 teaspoon of butter. Repeat with the remaining ingredients.
Heat a skillet or grill pan over medium heat. Cook the sandwiches, in batches, until they are browned on each side and the filling is warmed through, about 6 minutes. Cut the sandwiches in half and serve immediately.