In a large pot, heat the olive oil and vegan butter over medium heat. Add the sliced onions and stir until they are fully coated in the oil and butter. Cover the pot and let the onions cook for about 15 minutes.
Uncover the pot, raise the heat to medium-high, and add the sugar and a pinch of salt. Continue to cook the onions, stirring frequently, until they are caramelized and golden brown. This process may take up to 30 minutes.
Add the minced garlic to the pot and cook for another 2 minutes, or until the garlic is fragrant.
Deglaze the pot with the vegan red wine, scraping the bottom of the pot to loosen any bits that have stuck to it. Let the wine reduce for about 5 minutes.
Add the vegetable broth, bay leaves, and thyme sprigs to the pot. Bring the soup to a simmer and let it cook for about 30 minutes. Season with salt and pepper to taste.
While the soup is simmering, preheat your oven to 180°C (350°F) and slice the baguette into rounds. Place the rounds on a baking sheet and toast them in the oven until they are golden and crispy.
Ladle the soup into oven-safe bowls. Place a few toasted baguette slices on top of each bowl of soup, and sprinkle a generous amount of vegan mozzarella cheese over the bread.
Place the bowls on a baking sheet and put them in the oven. Bake the soup for about 10 minutes, or until the cheese is melted and bubbly. If you'd like the cheese to be a bit browned, you can broil the soup for an additional 2-3 minutes.
Let the soup cool for a few minutes before serving. Enjoy your delicious vegan French onion soup!