Река Черни Лом извира от южното подножие на Лилякското плато, на 480 м н.в., на 1,3 km североизточно от село Александрово, община Търговище. До устието на най-големия си приток река Баниски Лом тече в широка долина в началото на запад, след това на север до село Кардам и на северозапад до устието на Баниски Лом. След устието на Баниски Лом реката променя генералното си направление на северно и долината и добива каньоновидна форма, дълбоко всечена в аптските варовици и мергели. В този участък поради малкия наклон на течението ѝ тя започва да меандрира. На 3,2 km източно от село Иваново, на 47 м н.в. се слива с идващата отдясно река Бели Лом и двете заедно дават началото на река Русенски Лом.
Площта на водосборният басейн на Черни Лом е 1 276 km2, което представлява 44,4% от водосборния басейн на река Русенски Лом, като преобладават главно левите притоци. Югозападния сектор от водосборният басейн на реката попада в североизточната част на Област Велико Търново.