Matip gave Schalke the lead in the 29th minute before Axel Bellinghausen equalised for Dusseldorf after 56 minutes.
Matip then struck again nine minutes from time as Schalke collected just their second win in the last 12 league matches to jump to 33 points
Dusseldorf had collected six points from their last three matches but remain on 27 points.
Schalke had the first chance of the match but Jefferson Farfan found only the side netting in the eighth minute.
Farfan was close again 11 minutes later but his shot came off the right post.
Dusseldorf's first opportunity came in the 24th minute as Dani Schahin's long distance effort went just over the bar from 27 yards.
Schalke went ahead in the 29th minute with a set-piece. Farfan's free kick found Jermaine Jones, who headed into the middle where Matip hit home with his knee from four yards out.
The hosts were close to doubling the lead five minutes after the break but Julian Draxler shot over the bar from 19 yards out.
Dusseldorf had created very little attacking of note all game but equalised in a superb counter-attack. Schahin crossed from the left side right of goal to Andreas Lambertz who passed back into the middle where Bellinghausen struck home from four yards out.
Schalke regained the lead in the 81st minute, Brazilian Michel Santos' shot deflected to Matip, who calmly turned and beat keeper Fabian Giefer.