Heat olive oil in large pot over high heat. Season beef with salt and pepper and add in batches, until browned on each side. Should be 1-2 minutes per side. Set aside onto plate and repeat with remaining beef.
Lower pot to medium heat and add the bacon and cook until bacon fat is starting to brown and fat is rendered, about 5 minutes. Add the onion and cook for about 5 minutes until onion is soft and translucent. Add garlic and cook for another 3 minutes. Stir flour into mixture.
Add Guinness beer slowly until flour is dissolved, scraping bottom to get the brown bits. Add chicken stock, beef stock, tomato paste, carrots, celery, bay leaves and thyme. Return the beef to the pot as well as any juice from them. (I use both chicken stock and beef stock so Guinness beer is more pronounced but you can use beef stock only)
Bring to boil and then cover and simmer for 2 hours. Remove lid and simmer for another 30-45 minutes or until beef is starting to fall apart. Remove the bay leaves and thyme.
At this point I wanted it slightly thicker so I mixed some cornstarch with more beef stock and then added to stew and let cook for another 10 minutes. (You can skip this step if it's thick enough for you) Adjust for seasoning.
Serve over mashed potatoes or mashed cauliflower.
Notes
Do not skip searing the beef chuck as it helps create flavor and seal in the juice.
Use a combination of chicken and beef stock which allows you to highlight the Guinness flavor.
If you like a thicker stew, mix 2 tablespoon cornstarch with ¼ cup beef stock before adding to the Guinness stew as it is simmering.
Do not overcook the stew. It shouldn't cook longer than 3 hours, otherwise you'll have dry beef.