Makhaya Ntini was caught at deep mid-wicket by Upul Chandana off Muttiah Muralitharan before the spinner struck again to dismiss Rudolph, caught behind, taking his Test record haul of wickets to 531 in the process.
That paved the way for leg-spinner Kaneria to claim the three remaining wickets, including that of Sam Northeast, who scored 71 to record his second half-century of the game.