Season the meat with salt and pepper. In a large stock pot, heat 2 tablespoons oil over medium-high heat. Add the beef and sear until all sides are browned, about 3 minutes per side. Transfer to a plate and set aside.
Add the remaining oil to the pan. Once hot, add the onion, carrots, celery and soffritto. Cook until onion is soft and translucent, about 5 minutes. Stir in the tomato paste and cook for 2 minutes. Add the bay leaves, thyme and beef. Pour the stock over the beef and vegetable mixture. Cover and bring to a boil. Reduce heat to low and simmer for 2 hours, stirring occasionally. Skim off any oil residue that may rise to the surface.
Remove from the heat. Remove the bay leaves and thyme sprigs and discard. Transfer the beef to a chopping board and allow to rest for 10 minutes.
Return the pot to the heat, cover and bring to a boil. Add the pasta and cook until al dente, about 7-9 minutes.
In the meantime, shred the beef on the cutting board. Once pasta is cooked, add the beef back to the pot and stir. Add spinach and cook until slightly wilted, about 2 minutes.
Divide into bowls and serve with freshly grated Parmigiano.