Preheat oven to 350. Combine bread and milk in a medium bowl, pressing on bread to submerge. Let sit 10 minutes.
Squeeze out most of milk from bread and discard milk. Place bread in a large bowl. Add ground beef, eggs, finely chopped onion, parsley, salt, pepper, and thyme. Using your hands, mix together until well combined.
Form 1 3/4 inch meatballs and place in 2 13-by-9-inch glass baking dishes. Bake for 30 minutes. Let cool slightly.
Dust meatballs with flour and shake off excess. Melt butter and oil in a large skillet over medium-high heat. In 2 batches, saute meatballs until browned on all sides, about 3 minutes.
Return all meatballs to skillet. Whisk together tomato paste and wine. Add to skillet and bring to a boil. Continue boiling 5 minutes, until liquid thickens slightly. Stir often.
Add broth, reduce heat to medium and simmer until it thickens, about 15 minutes. Season with salt and pepper.
Cook potatoes in a large pot of salted water for 30 minutes, until very tender. Drain well. Place in bowl with butter and mash well.
Add milk to potatoes and mash and stir to incorporate. Add cheese.
Add spinach and stir it in. The heat from the mashed potatoes will wilt and steam the spinach. If your potatoes have cooled off to much to do this, you can microwave them to heat them back up.
Season liberally with salt and pepper.