Fry the bacon in a skillet over medium heat until crisp, about 7 minutes. Remove the bacon with a slotted spoon and drain on paper towels.
Discard all but 2 tablespoons of the bacon grease. Return the skillet to the heat, add the garlic cloves and cook over medium heat for 1 minute. Remove and discard the garlic. Add the bread cubes and toast, stirring occasionally until browned on all sides.
In a wide pot, combine the chicken stock and water, bring to a boil, reduce heat and let simmer. One at a time, break the eggs into a small bowl then gently slide the egg into the simmering water. Poach until the egg is just set, about 2 minutes. Remove from the soup with a slotted spoon and place on a plate lined with paper towels.
Stir the spinach, ¾ cup of the parmesan cheese and the tomatoes into the chicken stock. Cook until heated through – a minute or two. Taste the soup and season to taste with salt and pepper.
Ladle the soup into 4 soup bowls, top each with a poached egg, some of the bacon bits, and the bread cubes. Sprinkle the remaining parmesan cheese on top of each and add a bit of coarse salt and freshly grated black pepper. Serve immediately.