Add the olive oil to a large casserole dish over a medium heat. Add the beef and cook until browned all over. Remove from the pan with a slotted spoon and set aside.
Add the onion, garlic and celery to the pan. Sweat gently until tender.
Add the fennel and thyme and stir well to combine. Cook for a further minute or two until fragrant.
Add the tomato purée and balsamic vinegar and stir well to coat the vegetables.
Return the beef to the pan and stir well.
Add the chopped tomatoes and stock and bring to a gentle boil.
Reduce to a simmer, cover and cook gently for an hour.
Uncover and simmer for a further 10 minutes. Discard thyme stalks to serve.