The mother of three-year-old Mikaeel Kular repeatedly beat her son before stuffing his lifeless body into a suitcase, a court has heard.
Rosdeep Adekoya "lost her temper" and killed the toddler after he was repeatedly sick following a family day out at a restaurant in January.
After discovering his body on the floor of their Edinburgh home, she wrapped it in a duvet cover, concealed it in the suitcase and drove 25 miles to Fife to hide it in woodland.
A major search was launched for the youngster after she called 999 and reported him missing in an effort to conceal the crime.
But mobile telephone masts recorded the 34-year-old's journey across the Forth Road Bridge, undermining her statements to police about her whereabouts.
She finally broke down, admitting to police: "It was an accident and I panicked."
Adekoya was charged with Mikaeel's murder but pleaded guilty to the reduced charge of culpable homicide at the High Court in Edinburgh.
She admitted a separate charge of attempting to defeat the ends of justice by pretending to police he had gone missing. Sentence was deferred until August 25.
Defence QC Brian McConnachie said the case was "truly tragic" for all the family.
He told the court: "Rosdeep Adekoya is not a monster."
Adekoya's internet history showed searches including "I find it hard to love my son", "Why am I so aggressive with my son" and "Get rid of bruises".
Mikaeel died on the night of January 14 from injuries inflicted the previous Sunday after the restaurant outing.
He was smacked and struck on the body and head with a clenched fist after vomiting repeatedly, the court heard.
Adekoya dragged him to the shower by his arms and "beat him heavily" on his back as he lay over the bath edge, causing internal damage.
Advocate depute Alex Prentice said: "He would have been in significant pain but was put to bed.
"The pain would have increased significantly while Mikaeel became dangerously ill ... finally dying as a result of the injuries inflicted upon him by the accused."