Pat the beef chunks completely dry with paper towels - this is crucial for getting a good sear. Season generously with salt and black pepper, then dust with flour until lightly coated. The flour helps develop a crust and will later help thicken the stew.
Heat oil in a Dutch oven until it's hot but not smoking. Work in small batches - don't crowd the pan or the meat will steam instead of sear. Place beef chunks in a single layer, leaving space between each piece. Let them develop a deep brown crust before turning, about 4-5 minutes per side. Remove and set aside. This step takes patience but builds incredible flavor.
In the same pot with all those flavorful brown bits, add your onions, carrots, and celery. Cook until the onions turn translucent and start to soften, about 5-7 minutes, stirring occasionally to scrape up the brown bits from the bottom. This is where the deep flavor develops.
Add minced garlic and cook until fragrant, about 1 minute. Stir in tomato paste and cook for another 2-3 minutes until it darkens slightly. This helps develop a richer flavor and removes any raw tomato taste.
If using wine, pour it into the pot and use it to scrape up any remaining brown bits from the bottom. Let it simmer for 2-3 minutes to cook off the alcohol. If not using wine, you can use a splash of the beef broth instead. Add the remaining broth, bay leaves, and thyme, then return the meat and any accumulated juices to the pot.
Bring to a gentle boil, then reduce heat to maintain a low simmer. Cover and cook for about 1.5 hours, until the meat is starting to become tender. Add the potatoes and continue cooking for another 30-45 minutes until both the meat and potatoes are fork-tender. The meat should easily pull apart and the potatoes should be cooked through but not falling apart.
Taste and adjust seasoning with salt and pepper. The flour from browning the meat should have thickened the stew nicely, but if you'd like it thicker, you can simmer uncovered for a few minutes. Sprinkle with fresh parsley before serving.