Heat a large Dutch oven over medium high heat and add the cooking oil.
Add the beef and brown on all sides.
While the beef is browning, combine all remaining ingredients (except bay leaves and oil) in a blender and pulse until mostly smooth (some chunks are fine).
When the beef is browned, add the pureed sauce and the bay leaves.
Bring to a simmer over medium heat, then place in the preheated oven, uncovered, and cook for 4 hours, flipping the meat once halfway through.
Remove the beef from the oven and take it out of the pot. Once cool enough to touch, shred it into pieces and add it back to the pot.
Bring to a simmer over medium heat and cook for 5-10 minutes, or until much of the liquid has been absorbed.
Serve the beef on toasted corn tortillas with the reserved diced white onion, cilantro, salsa, crema and Cotija cheese.
Slow Cooker Instructions:
Brown the beef and make the puree per the above instructions.
Add the beef, puree and bay leaves to the slow cooker and cook on low for 7-9 hours or high for 4-5 hours.
Remove the roast from the slow cooker and shred with a fork. Place the meat back in the slow cooker and mix with the liquid.
Serve on tortillas with accoutrements.
Notes
For a larger roast, add about 45-60 minutes per additional pound of meat, and adjust the sauce accordingly. Use a fork to test for tenderness - cook longer if it does not shred apart easily.
Toasting corn tortillas before serving is the recommended way to serve this. However, you an use warmed flour tortillas as well.
Any excess liquid remaining after simmering can be used as a sauce for the tacos.
Substitute pork shoulder or lamb shoulder roast for the chuck roast.
Recipe can also be made in the slow cooker - see above for slow cooker instructions.
Use any toppings you like to make tacos - definitely add fresh lime juice as it cuts the richness of the braised beef.
Can be easily made in advance and stored in the fridge or freezer until ready for use.