Two distinct codeword-searching procedures based on iterative bounded-distance decoding (BDD) are combined to form an adaptive two-stage maximum-likelihood (ML) decoder for binary linear block codes. During the first stage of the algorithm, a tight upper bound on an error likelihood metric ("discrepancy") is established iteratively for the ML codeword. First-stage processing requires sorting and storage. Adaptive switching to the second stage removes the sorting and storage requirements and allows to rule out redundant BDDs efficiently. Second-stage processing accounts for all codewords with discrepancy lower bound below the upper bound of the ML codeword and guarantees ML performance. In addition, the proposed two-stage algorithm is inherently tunable for controlled suboptimum operation. Under sub-ML operation, the overall scheme can be interpreted as a generalization of the Chase (1972) algorithm. Simulation studies for the (24,12,8) extended Golay and the (64,30,14) and (128,64,22) extended Bose-Chaudhuri-Hocquenghem (BCH) codes illustrate and support these theoretical developments.