Shahid Aftab of Punjab has won 49th National Snooker Championship, defeating Muhammad Sajjad 7-5 in the final at the sports Complex in Karachi.