Stewart Greene, 65, killed Alex Robinson, nine, while his mum was out shopping for a Christmas turkey.
Giving evidence in court he apologised to his daughter Joanne, ex-wife Andrea and Alex's dad John.
Greene said: "I'm so sorry to Joanne and Andrea and to John Robinson.
"The truth is I killed Alex. I thought about it the night before. "I walked Alex into the bathroom and put him in the bath. I'd run the bath before I called him. Two taps running quicker.
"I think at the time he asked me if I was going to wash myself. "I picked him up and put him in the bath and drowned him. He was struggling. He struggled until I drowned him."
He admitted that he did nothing to help Joanne and Andrea when they made desperate attempts at CPR.
Greene was discharged from a psychiatric unit against his will two weeks before the killing on December 23 last year.
Lincoln Crown Court heard he later told a psychiatrist "I'm just an evil murdering b*****d who killed his grandson".
During cross-examination Michael Evans QC asked Greene: "You knew you wanted to kill Alex. Is that right?"
Greene replied: "Yes... I knew I was killing him. Yes. I killed Alex.
Greene then added: "I don't think I can say any more. I've admitted the offence. "I've done what I've done."
The trial continues.