Add olive oil to a small skillet set over low heat. Add sliced onion and cook until caramelized, about 15-20 minutes.
Spread butter onto one side of all four slices of bread and place butter-side-down on a skillet or griddle over medium-low heat.
Top each slice of bread with feta cheese. And add tomato slices to just two of the slices and roasted red peppers on top of that. On the other two slices of feta-topped bread, add baby spinach leaves, caramelized red onions and kalamata olives.
Carefully bring two slices of bread together to sandwich together. (Alternatively, you can stack all the ingredients on two slices of bread (starting and ending with feta) and set the two remaining slices of bread on top). This grilled cheese is packed with a lot of ingredients, so some might fall out... You can just tuck them back in!
Grill until bread is golden, about 3 minutes, before flipping and grilling until the other side is golden, another 3 minutes.
Slice and serve.