Warm olive oil in a skillet over medium heat. Sauté garlic for 30 seconds.
Add spinach and cook, stirring, until wilted, 1–2 minutes. Transfer to a board, squeeze out moisture, and chop.
In a bowl, whisk cream cheese, mayonnaise, lemon juice, salt, black pepper, and red pepper flakes until smooth.
Fold in chopped spinach, artichokes, mozzarella, and Parmesan until evenly combined.
Spread butter on one side of each bread slice. Keep the buttered sides facing out.
Divide the spinach-artichoke filling over two unbuttered sides. Cap with remaining bread, buttered sides out.
Cook sandwiches in a skillet over medium-low heat until deep golden and melty, about 3–4 minutes per side.
Rest 1 minute, then slice and serve warm.