New York City police say a 20-year-old man has confessed to fatally stabbing a bus driver in front of horrified passengers.

Police said the man was facing homicide charges Tuesday after witnesses identified him in a lineup. The man was questioned Monday night after investigators tracked him down at his girlfriend's apartment.

Police say 46-year-old Edwin Thomas was driving a B-46 bus when the attacker boarded through the exit door and sat down. Thomas initially denied him a transfer slip because he didn't pay for the ride. He later gave him one before following the man off the bus and arguing with him in the street.

Police say Thomas was punched in the head and then got back on the bus. The suspect followed, stabbed him and fled.