Soak: Cover beans with cold water, stir in 1½ TBSP kosher salt (see Note 1), and soak 8–12 hours. Drain and rinse.
Boil the beans: Add soaked beans to a large saucepan with 9 cups (2.1 L) water, the baking soda if using, and the oil. Bring to a boil (covering the pot speeds this up), skimming off thick foam. Partially cover and boil for 10 minutes.
Simmer the beans: Stir in 2 tsp kosher salt, 1 cinnamon stick, and 2 bay leaves. Reduce to a very gentle simmer (just a few tiny bubbles). Cook uncovered until beans mash easily between your fingers (don't overcook until mush though): for a 10 hour soak, this is ~40 to 45 minutes with baking soda, ~70 without.
Strain: Drain beans over a bowl, reserving the liquid; discard the spices. You want 4½ cups (1.1 L) liquid—top off with water if short. Keep beans and liquid separate.
Start the masala: Heat a large sauté pan over medium until hot, then add 3 TBSP oil. Once shimmering, add 1 cinnamon stick, 2 bay leaves, and 2 black cardamoms (if using); stir 30–45 seconds until aromatic. Add 2 tsp cumin seeds and sizzle for 10 seconds.
Brown the onions: Add onion and serranos with a big pinch of salt. Cook for 12 to 15 minutes until deeply browned, adding a splash of water if they brown unevenly.Meanwhile: In a mini food processor blender cup, blend garlic and ginger into a coarse paste; transfer to a bowl with the tomato paste; Then add the tomatoes to the machine and blend into a puree. Build the base: Add the garlic-ginger-tomato paste mixture to the pan, stirring almost constantly for 90 seconds. Add the tomato purée, deglazing the pan, then season with 1 tsp kosher salt and black pepper to taste. Rapid-simmer ~10 minutes, stirring occasionally, until you have a concentrated, dark red paste.Meanwhile: Combine all the ground spices in a bowl. Bloom the ground spices: To the pan, add the Ground Spices plus a big splash of water. Add the combined ground spices plus a big splash of water. Stir 1 minute until thick, then remove from heat.
Combine: In the large saucepan, combine the masala and drained beans over medium heat, tossing to coat for 1 minute. Add the reserved 4½ cups (1.1 L) liquid.
Simmer: Bring to a boil, then cover and simmer on low for 20 minutes, stirring occasionally. Uncover and rapidly simmer for 10 minutes until the gravy has thickened.NOTE: If you didn’t use baking soda, mash ~10% of the beans against the pan to thicken.)Meanwhile: Prep the Tadka ingredients. Finish: Off the heat, fish out the bay leaves, cinnamon, serrano, and cardamom. Stir in cilantro and a few squeezes of lemon. Set aside while you make the Tadka.
Make the Tadka: Add the oil or butter to a cold small saucepan, then turn to medium heat. Once shimmering or melted, add garlic and ginger; stir 1 to 2 minutes until the ginger frizzles at the edges. Add fenugreek, garam masala, and chili powder; stir for 20 to 30 seconds, then pour over the rajma.
Serve: Taste and adjust salt and lemon. Serve with rice or flatbread, and yogurt if desired. It thickens as it rests, so loosen with water as needed.