Mix the tomatoes, onions and basil leaves in a bowl. Season with vinegar, salt and pepper. Set aside to marinate for 5 minutes.
Cut the baguette in half lengthwise and pull out about two-thirds of the middle, leaving a crusty bread shell. Rub the insides with the garlic halves and drizzle generously with olive oil.
Fill the cavity with the tomato mixture. Spoon any remaining juice over the top of the baguette and the rest over the tomato mixture. Make a layer of olives. Lay the sliced egg over top, season with salt and pepper, and put the top of the bread back on, pressing down well. Wrap in parchment until serving. The longer it sits, the more the flavors will soak into the bread.