Police say 19-year-old Gilberto Vicente was charged with assault, reckless endangerment and criminal possession of a weapon in the Wednesday night gunfire on Powell Street in Brownsville.
Vicente was charged with opening fire on the group at about 7:20 p.m., hitting his intended target, a 19-year-old man, in the head.
The boy and his 37-year-old father were both struck in the leg while walking home with food.
The victims were taken to Brookdale University Hospital, where the teenager was in critical condition.
The shooting is believed to be connected to local gang violence.