Place liver in a nonreactive (ceramic or glass) bowl and pour milk over. Refrigerate, covered, 5 to 6 hours.
In a large skillet, heat 2 tablespoons butter over medium-high heat. When butter is shimmering, add onions. Cook, stirring occasionally, until softened and translucent, 5 to 10 minutes. Reduce heat to medium-low and continue to cook, stirring more frequently until onions are very soft and brown, 30 to 40 minutes more.
Drain liver and discard milk. Pat liver dry with paper towels.
Spread flour on a plate and season with salt and pepper. Thoroughly coat liver with the flour mixture, shaking off excess.
Heat a large (13-inch) saute pan over medium heat and add remaining 2 tablespoons butter and the oil and heat until shimmering. Cook (in batches, if necessary, to avoid crowding pan) until liver is firm (but not hard) and browned on the outside but still slightly pink in the center, 1 to 2 minutes per side. Repeat with remaining liver, adding more oil to the pan as necessary. Add sage and cook for 1 minute more.
Divide liver among plates and top with onions.