Not only Harbhajan but paceman Sandeep Sharma and Siddarth Kaul also took three wickets each after Punjab opted to field at Sardar Vallabhbhai Patel Stadium.
None of the Gujarat batsmen could score a half-century but some gritty batting by the lower-order players ensured that the hosts have something on the board to fight for.
At the top, opener Samit Gohel (41) and Manprit Juneja (42) batted well but Harbhajan caused a middle-order collapse by dismissing Gohel, rival skipper Parthiv Patel (22) and Y Venugopal Rao (13).
Gohel and Juneja had added 79 runs for the second wicket when Kaul had Juneja caught behind for his second wicket. Kaul had earlier provided the first breakthrough by bowling opener Smit Patel (18)
Harbhajan then sent back Gohel and Patel and later Rao.
From a comfortable 107 for two, Gujarat were struggling at 173 for seven but Jasel Karia (40) and Rush Kalaria (40) rescued the side with a 84-run stand.
Kaul broke the partnership and took his third wicket when he had Karia caught behind. Punjab stumper Uday Kaul took four catches behind the wicket.
Gujarat 1st innings: 261 for nine in 90 overs. (M Juneja 42, S Gohel 41; Sandeep Sharma 3/40, Harbhajan Singh 3/61).