Preheat an oven to 350F.
Tear the bread into rough 1 to 1 1/2-inch pieces and toss with ¼ cup of the extra virgin olive oil. Season with salt and place on a baking sheet. Bake in the center of the oven, tossing occasionally, until light golden, about 20 minutes. Set aside.
Drain the tomatoes and using scissors, snip the tomatoes across into ½-inch slices. Set the tomatoes and their juice aside in another bowl.
Warm the remaining 2 tablespoons olive oil in a medium frying pan over medium high heat and cook the onions, stirring occasionally, until soft, 7 minutes. Add the garlic and cook for 1 additional minute.
In a large bowl, whisk together with the eggs, Parmigiano and milk. Season with 2 teaspoons salt. Add the onions, toasted bread, tomatoes and their juice, basil, parsley oregano and stir gently together.
Transfer into an oiled 9 X 9-inch baking dish and bake in the middle of the oven until the bread pudding is golden on top, about 45 to 50 minutes.