Preheat your oven to 400°F (200°C). On a large baking sheet, toss the eggplant cubes with the olive oil, ½ teaspoon of salt, and the black pepper. Spread them into a single layer, making sure they aren't crowded (use two sheets if necessary). Roast for 20-25 minutes, flipping halfway through, until the eggplant is tender, browned, and slightly caramelized at the edges. Set aside to cool slightly.
While the eggplant is roasting, place your bread cubes in a large bowl. A wide, shallow bowl works best, as it gives you plenty of room to mix everything without crushing the bread.
In a separate medium bowl, whisk together the eggs until they are light and frothy. Whisk in the milk, heavy cream, the 1 cup of Parmesan cheese, minced garlic, dried oregano, the remaining ½ teaspoon of salt, and the optional red pepper flakes. Continue whisking until everything is well combined and the Parmesan is evenly distributed. This savory custard is the heart of the dish.
Pour the prepared custard over the bread cubes in the large bowl. Gently toss with your hands or a rubber spatula to ensure every piece of bread is coated. Let the mixture sit for at least 20 minutes, or up to an hour, tossing occasionally. This allows the stale bread to absorb the rich custard, which is the secret to a creamy, not soggy, bread pudding.
Reduce the oven temperature to 375°F (190°C). Grease a 9x13 inch baking dish. Gently fold the roasted eggplant and half of the torn mozzarella into the soaked bread mixture.
Transfer half of the bread and eggplant mixture into the prepared baking dish, spreading it into an even layer. Dollop half of the marinara sauce over the top. Sprinkle with half of the chopped fresh basil. Repeat with the remaining bread mixture, then dollop the remaining marinara sauce over the top. Tuck the remaining pieces of mozzarella into the top layer.
Sprinkle the top generously with a little extra Parmesan cheese. Bake, uncovered, for 45-55 minutes, or until the custard is set, the top is golden brown and bubbly, and a knife inserted into the center comes out clean.
Let the bread pudding rest for at least 10-15 minutes before serving. This allows the custard to fully set and makes it much easier to slice and serve. Garnish with the remaining fresh basil just before bringing it to the table.