Arrange oven rack in center of oven. Preheat oven to 350°F. In a medium skillet, melt butter over medium heat. Add onion and cook, stirring occasionally, until softened, about 5 minutes. Transfer to a bowl and set aside.
Lightly grease a shallow, 1 1/2-quart baking dish. Layer bread, cheese and tomatoes in dish. Add eggs, milk, salt and pepper to reserved onions and beat well. Drizzle over bread.
Bake bread pudding until top is puffed and nicely golden, about 50 minutes. Let pudding cool for 5 minutes before serving.