Abstract Heavy metal contamination in croplands has been a serious concern because of its high health risk through soil-food chain transfer. A field experiment was conducted in 2010–2012 in a contaminated rice paddy in southern China to determine if bioavailability of soil Cd and Pb could be reduced while grain yield was sustained over 3 years after a single soil amendment of wheat straw biochar. Contaminated biochar particles were separated from the biochar amended soil and microscopically analyzed to help determine where, and how, metals were immobilized with biochar. Biochar soil amendment (BSA) consistently and significantly increased soil pH, total organic carbon and decreased soil extractable Cd and Pb over the 3 year period. While rice plant tissues’ Cd content was significantly reduced, depending on biochar application rate, reduction in plant Pb concentration was found only in root tissue. Analysis of the fresh and contaminated biochar particles indicated that Cd and Pb had probably been bonded with the mineral phases of Al, Fe and P on and around and inside the contaminated biochar particle. Immobilization of the Pb and Cd also occurred to cation exchange on the porous carbon structure.