The 90-year-old woman was treated for serious injuries in hospital after the early morning attack that police say has left her traumatised.
Police were told a man broke into the nursing home on the NSW Central Coast about 12.40am on Wednesday before attacking the woman.
He allegedly used bedding to silence the woman's calls for help and pinned her to the bed, causing injuries to her arms, legs and head.
Police allege he also stole some of the woman's property before leaving.
A 34-year-old man was arrested at a home in Caves Beach, near Lake Macquarie, on Monday night and charged with a string of serious crimes, including committing a serious indictable offence using violence.
The man ran out the back door of the property and jumped a fence before he was caught, police said.
He was taken to hospital to treat minor injuries to his arm, and was later refused bail to appear at Belmont Local Court on Tuesday.
Sex Crimes Squad commander Jayne Doherty said the community would understandably be "in uproar" over the attack on a vulnerable, elderly woman.
"It is horrendous that someone, any person in the safety of their home would be attacked like this, but to attack a very defenceless old lady is beyond belief," she said.
Detective Superintendent Doherty said the assault appeared to have been an opportunistic attack.
"So far we haven't been able to find any connection between this male, the aged-care facility and the woman prior to the offence," she said.
Officers found electronic devices, SIM cards and clothes allegedly linked to the crime in their search of the man's home.
The woman is being looked after by her family and medical staff as she recovered from severe wounds to her arms, Det Supt Doherty said.
"As you can understand, being elderly, her skin has torn significantly where pressure was applied," she said.
Extra security was hired at the aged-care home to ensure residents felt safe, but police said they had no ongoing safety concerns.
1800 RESPECT (1800 737 732)
National Sexual Abuse and Redress Support Service 1800 211 028