The accident occurred about noon Saturday 3 miles outside Bayard in Grant County, KRQE-TV, Albuquerque, reported.
The Silver City Sun-News reported the locomotive left the tracks and dropped 40 to 50 feet into a ravine, while the cars, which were carrying iron, continued down the track before derailing on a curve.
The train was operated by Southwestern Railroad, KRQE-TV said.
The Sun-News said the cause of the accident had not yet been determined. All three victims were in the locomotive.