Place beef in a pot with half the onion, 2 garlic cloves, bay leaf, half the salt, and enough water to cover. Bring to a boil, skim, then cover and simmer gently until fork-tender, about 2 to 2 ½ hours. Add water if needed to keep the meat covered.
Transfer beef to a plate and shred with two forks. Reserve 1 cup of the cooking liquid and discard the bay leaf.
Blend tomatoes, chipotles, remaining garlic, oregano, cumin, and ½ cup reserved cooking liquid until smooth.
Thinly slice the remaining onion. Heat oil in a large skillet over medium heat and cook onion until soft, about 5 minutes. Add the blended sauce and simmer for 5 minutes.
Add shredded beef and remaining salt. Simmer 10 to 15 minutes, adding reserved cooking liquid as needed for a moist sauce. Stir in lime juice, taste, and serve on tostadas or in warm tortillas.