A group of youths chanted "drown him" as they held the head of a 15-year-old under water.
The teenager was brutally beaten up in Rolleston, Canterbury, before being dragged to a water race and pushed under.
Senior Sergeant Pete Stills said the boy "received a real pasting".
"His eyes were swollen shut and he needed stitches for a pretty serious gash underneath his chin.
"It was a harrowing attack by a group on a lone individual, completely unprovoked and cowardly."
Four youths approached the 15-year-old on Tennyson St, Rolleston, at 10.30pm on Saturday and demanded his cap, Stills said.
He had been at a fireworks show in Foster Park.
When he refused to hand over the cap, the group repeatedly punched him and kicked him on the ground.
They dragged him to a nearby water drain and held his head under the water.
Then in an appalling move, some in the group urged the others to drown him.
"We are unsure how long he was underwater for," said Stills.
"At one stage he believed he was going to be drowned."
The teenager eventually broke free and tried to run home.
The teenager's mother, who did not want to be named, said he collapsed near their house and caught the attention of the neighbour, who brought him home.
"I didn't recognise him, I thought 'who the hell are you'," she said.
"He couldn't talk and his mouth was full of blood."
They called 111 and he was taken to Christchurch Hospital.
The teenager was discharged from hospital on Sunday.
Police are following strong leads in identifying the attackers.
Anyone with information can call the police on (03) 363 7400 or anonymously through Crimestoppers on 0800 555 111.