Heat oil in a large Dutch oven over medium-high heat. Pat beef shanks dry, season with salt and pepper, and sear until golden brown on all sides. Remove and set aside.
In the same pot, sauté onion, garlic, carrots, and celery for 5 minutes until softened.
Stir in tomato paste and flour, cooking for 1–2 minutes.
Deglaze the pot with red wine, scraping up any browned bits. Simmer for 2–3 minutes.
Return beef shanks to the pot. Add beef broth, potatoes, bay leaves, thyme, and rosemary. Bring to a boil, then reduce to a low simmer. Cover and cook for 2–3 hours until beef is fork-tender.
Remove bay leaves, adjust seasoning with salt and pepper, and garnish with fresh parsley.
Serve hot with crusty bread, mashed potatoes, or buttered noodles.