A New York City bus driver was stabbed to death in front of horrified passengers by a rider who skipped out on paying the fare, and a suspect was in custody Tuesday.

Edwin Thomas, 46, the father of two teenagers, was behind the wheel of the B-46 bus in Brooklyn when the attacker got on shortly after noon on Monday, according to police.

The man swiped an invalid fare card and sat down on the bus before asking for a transfer slip usually available to riders.

When Thomas told him he couldn't get a transfer because he hadn't paid for the ride, the man punched the driver in the head and stabbed him in the torso in front of other passengers, police said.

Thomas was rushed to a hospital, where he was pronounced dead, and the attacker fled on foot.

A suspect was caught early Tuesday morning, the New York Daily News reported. Police had posted a $12,000 reward for information leading to the culprit's capture. Detectives were questioning the man and hadn't yet filed any charges.

It was the first killing of an on-duty city bus driver in more than a quarter-century.

Passenger Benjamin Stacking told television reporters that he heard the commotion.

"It's crazy because the bus driver was cool," Stacking said. "He let me on. I was 50 cents short. He let me on and gave me a transfer. No reason to stab a bus driver if you are broke or have no money and can't get a transfer. No reason to stab a person."

Witnesses described the attacker as in his 20s and wild-eyed, according to the Daily News. He swiped his invalid Metrocard several times, but Thomas allowed him to board the bus anyway. He then persisted in asking Thomas for a transfer.

"You didn't even pay. Why should I give you a transfer?" Thomas said, according to the News.

The furious rider then punched Thomas in the head. Thomas pulled over and the man got off, but then forced his way back on before the doors had closed, the News reported. He took out a knife and stabbed Thomas repeatedly in the chest and stomach, according to the New York Post.

Elliot Lee Sander, the Metropolitan Transportation Authority's executive director and chief executive, said Thomas was a seven-year veteran and characterized him as "a valued employee" who would "be sorely missed."

"Bus operator Thomas was killed while serving the people of New York City," Sander said. "This is an extraordinary tragedy for the city and the MTA."

Gov. David Paterson said in a statement he was "shocked and saddened" by the killing of Thomas, who the governor said "spent his career ensuring the safety of his passengers."

Mayor Michael Bloomberg described Thomas in a statement as a "good man who was good at his job of helping move New York City."

The mayor said he spoke with Thomas's son Jeffrey, offering the family his sympathies.

"In Edwin's memory, I ask all New Yorkers riding public transit tonight or tomorrow to take an extra moment to say 'Thank you' to our New York City Transit workers and I ask everyone to keep Edwin Thomas' family and loved ones in your prayers," the mayor's statement said.

The fatal attack on the bus driver, the mayor said, was "so shocking" partly because such violence has become rare.

The last bus driver killed while on the job was Harvey Shield, 27, in 1981 in Brooklyn, also over the refusal to provide a transfer, the Post reported.

Assaulting an on-duty MTA employee is a felony.

The divorced dad's distraught children described a loving father who was dedicated to his family and his job.

"He never missed a day's work," his 18-year-old son Jeffrey Jupiter told the Post. "My dad died for $2. We were best friends. We loved each other. ... We were very close."

Thomas' daughter, 16-year-old Edley Thomas, said that she was "going to miss everything about my dad."

"I will cherish all the times we spent together," she told the newspaper.

Click here for more on this story from the New York Daily News.

Click here for more on this story from the New York Post.

The Associated Press contributed to this report.