Heat the olive oil in a Dutch oven over medium-high heat. Add the beef cubes and brown them on all sides for about 6 minutes. Remove the beef and set it aside.
Add the onion, carrots, and celery to the same pot. Cook for 5 minutes until the vegetables begin to soften. Stir in the garlic and cook for 1 more minute.
Stir in the tomato paste, then return the beef to the pot. Sprinkle in the thyme, rosemary, salt, and pepper. Pour in the beef broth and bring the mixture to a simmer.
Cover the pot and cook on low heat for 1 hour and 30 minutes, stirring occasionally, until the beef is tender.
While the stew simmers, place the potatoes in a large pot and cover them with cold water. Add a pinch of salt and bring to a boil. Cook for 15 minutes until the potatoes are fork-tender.
Drain the potatoes and return them to the pot. Add the butter and milk, then mash until smooth. Season with salt and pepper to taste.
Ladle the stew into bowls and top each serving with a scoop of mashed potatoes. Sprinkle with fresh parsley before serving.