To peel the tomatoes, score a cross in the base of each tomato. Put in a bowl and cover with boiling water. Leave for 30 seconds, then transfer to cold water and peel the skin away from the cross. Cut in half, remove the seeds and chop.
Heat the oil in a large saucepan. Cook the garlic and onion over low heat until softened but not browned. Add the tomatoes and season well. Cover and simmer for 30 minutes. Add the bread and simmer, stirring once or twice, for 5 minutes.
Slowly stir in the stock and stir until the bread has broken down. Remove from the heat and add the basil. Cover and leave for 1 hour. Serve at room temperature or warm, with parmesan.