Tỉnh Bắc Ninh có 4 con sông chảy qua: Sông Cầu, sông Đuống, sông Thái Bình và sông Cà Lồ. Các con sông này chảy qua nhiều tỉnh trước khi vào tỉnh Bắc Ninh.

1. Sông Cầu:

Bắt nguồn từ dãy núi Văn Ôn ở độ cao 1.170 m của tỉnh Bắc Kạn, chảy theo hướng Bắc - Nam đến Thái Nguyên chuyển sang hướng Tây Bắc - Đông Nam, đến Phả Lại nhập với sông Thái Bình. Sông có chiều dài 290 km, diện tích lưu vực 6.030 km2. Sông Cầu chảy qua tỉnh Bắc Ninh bắt đầu từ xã Tam Giang (huyện Yên Phong) đến xã Đức Long (thị xã Quế Võ) có chiều dài 69 km.

2. Sông Đuống:

Là phân lưu của sông Hồng, chiều dài 67 km, bắt nguồn từ xã Xuân Canh (huyện Đông Anh, thành phố Hà Nội), chảy theo hướng từ Tây sang Đông và đổ vào sông Thái Bình tại Kênh Phố (huyện Chí Linh, tỉnh Hải Dương) hai bờ có đê bao khá vững chắc. Sông Đuống chảy qua địa phận Bắc Ninh dài 42 km bắt đầu từ xã Đình Tổ (thị xã Thuận Thành) đến xã Đức Long (thị xã Quế Võ).

3. Sông Thái Bình:

Là con sông lớn ở miền Bắc nước ta, thượng lưu sông Thái Bình bao gồm lưu vực sông Cầu, sông Thương, sông Lục Nam. Tổng diện tích lưu vực tính đến Phả Lại là 12.080 km2. Xuống dưới Phả Lại chừng vài km sông hợp lưu với sông Đuống tạo thành dòng chính thức sông Thái Bình. Sông Thái Bình dài 385km, đoạn chảy qua Bắc Ninh dài 16 km từ xã Đức Long (huyện Quế Võ) đến xã Minh Tân (huyện Lương Tài).

4. Sông Cà Lồ:

Sông Cà Lồ bắt nguồn từ dãy núi Tam Đảo, ở độ cao 300 m, nhập vào bờ phải của sông Cầu tại Lương Phúc, chiều dài sông là 89 km, diện tích lưu vực 881 km2, hệ số uốn khúc của sông lớn (3,7). Đoạn qua tỉnh Bắc Ninh dài 6,25 km từ xã Yên Phụ đến xã Tam Giang (huyện Yên Phong).