Heat oil in a 3-quart heavy saucepan over moderate heat until hot but not smoking, then cook ham, stirring occasionally, until beginning to brown, 1 to 2 minutes.
Add scallions, garlic, and bay leaf and cook, stirring occasionally, until scallions are tender and lightly browned, 6 to 8 minutes.
Add tomatoes, broth, water, salt, and pepper and simmer, partially covered, until tomatoes are tender, 15 to 20 minutes. Discard bay leaf and season soup with salt and pepper.