The Royals erased a 1-0 deficit in the eighth on Eric Hosmer's RBI double off Bryan Shaw (0-1) and then went to work in the ninth against the right-handed reliever.
Billy Butler led off the frame with a double, with Johnson coming in as a pinch-runner. Lorenzo Cain then coaxed a walk, chasing Shaw. Rich Hill relieved and surrendered a bunt single to David Lough, loading the bases.
Albers took the mound and with Miguel Tejada at the plate uncorked a wild pitch and Johnson raced home with the decisive run.
Aaron Crow (3-2) earned the decision after recording the final two outs of the eighth and Greg Holland racked up his 15th save for the Royals, who compiled a fifth win in six games and reached the .500 mark (34-34).
Kansas City starter James Shields stifled the Indians on one run over six full frames, yielding four hits.
Carlos Santana belted a solo homer for the Indians' only run.