In a large pot, heat the olive oil over medium heat. Add the onions and cook over medium-low heat until translucent and caramel brown, about 10 to 15 minutes. Stir often to prevent scorching. Add a tablespoon of water as necessary to prevent uneven browning. Tip: Now is a good time to make the croutons.
Add the garlic and bay leaf and cook, stirring, for one minute more.
Stir in the tomatoes, chicken stock, saffron threads, salt, and pepper. Bring the soup to a boil, then lower to a steady simmer and cook, uncovered, for 15 minutes.
While the soup is cooking, bring a small pot of salted water to a boil and cook the orzo until very al dente, about 6 or 7 minutes. The orzo should be undercooked. Drain the orzo and add to the soup.
Stir the cream into the soup. Return to a simmer and cook for 10 more minutes. Taste for seasoning, and serve with croutons.
Preheat the oven to 350°F. Cut or tear the bread into cubes. Toss with the olive oil and a generous pinch of salt, and roast on a sheet pan for about 10 minutes, until golden brown.
Set aside to cool to room temperature.Tip: If the bread is fresh, it may need to cook a little longer to dry out.
