Filling: Put an oven rack in the center of the oven. Preheat the oven to 375 degrees F. Butter a 9 by 13 by 2-inch glass baking dish. Add the bread cubes and set aside.
In a large skillet, heat the oil over medium-high heat. Add the shallots and garlic. Cook, stirring constantly until fragrant, about 1 minute. Add the tomatoes and season with salt and pepper, to taste. Cook until slightly soft, about 2 minutes. Remove the pan from the heat and stir in the basil. Pour the tomato mixture and Parmesan cheese over the bread cubes and combine well.
Custard: In a large bowl, beat the eggs, milk, salt, and pepper together until smooth. Pour the custard over the bread mixture and gently toss to coat. Bake until slightly puffed and golden, about 25 to 30 minutes. Remove the pudding from the oven and let cool for 5 minutes. Cut into wedges and serve.