Prep the beef: Pat the chuck roast dry and season all sides with salt and pepper. Cut into a few large chunks so it fits well in the slow cooker.
Sear for extra flavor (optional but recommended): Heat oil in a skillet over medium-high heat. Sear the beef on all sides until browned, about 2–3 minutes per side.
Transfer to the slow cooker.
Build the sauce: In the slow cooker, add sliced onion, garlic, chipotle peppers, adobo sauce, diced tomatoes, tomato paste, beef broth, cumin, chili powder, smoked paprika, oregano, and the bay leaf if using. Stir gently to combine.
Slow cook: Nestle the beef into the sauce. Cook on Low for 8–10 hours or High for 4–5 hours, until the beef is very tender and shreds easily with two forks.
Shred and reduce: Remove the beef to a large bowl and shred.
Skim excess fat from the liquid. Return shredded beef to the slow cooker and toss with the juices. If the sauce seems thin, leave the lid off and cook on High for 15–20 minutes to reduce.
Finish and taste: Stir in lime juice and a handful of chopped cilantro.
Taste and adjust with more salt, lime, or chipotle as you like.
Serve your way: Spoon into warm tortillas or over rice. Add toppings like diced onion, avocado, salsa, and cotija. Serve with lime wedges.