Coventry City recorded their second away win in their last three trips from the Ricoh Arena as they beat Walsall 2-0 in the Midlands derby.
An incredible strike from Jim O'Brien gave the Sky Blues an early lead and Marcus Tudgay netted his first for the club as they started 2015 with a win at the Banks's Stadium.
City had a great chance after just four minutes when O'Brien was bundled to the ground by Romaine Sawyers in the area and the referee pointed to the spot.
Tudgay, in first start since November, stepped up but his effort was low and central, which provoked O'Donnell to save with his legs.
But the Sky Blues were in just a minute later in stunning fashion, when O'Brien picked the ball up 30-yards out and hit an absolute screamer from a slight angle into the top corner.
City continued to dominate and Tudgay was unfortunate not to double the lead as he hit the bar on 22 minutes when he met O'Brien's looping cross from eight-yards out.
An incredible save was next to deny City, as O'Donnell miraculously clawed out Pennington's firm strike from eight-yards out after more good build-up.
That was the last real action of the first-half as Walsall started the second-half the better and hit the post twice in the space of a few minutes.
Anthony Forde smashed the right post from eight-yards out as he latched onto a parry from Ryan Allsop, before Romaine Sawyers' lovely flick found Michael Cain inside the area and his volley hit the left-post.
After that it became a much more scrappy affair - Aaron Phillips limped off with an injury and was replaced by Jack Finch. Adam Barton then came on for Simeon Jackson and with three minutes to go the Sky Blues made the game safe in front of 1772 travelling Sky Blues, when Tudgay notched his first for the club as he headed in O'Brien's corner from six-yards out.
That was it as the Sky Blues deservedly notched their third clean sheet in the last five games and their first win since Port Vale in December.
Coventry City: Allsop (GK), Phillips (Finch 77), Pennington, Willis, Haynes, Thomas, Fleck, O'Brien, Nouble, Jackson (Barton 78), Tudgay.
Subs: Burge (GK), Phillips, Barton, Maddison, Swanson, G. Thomas.
Walsall: O'Donnoll (GK), Taylor, O'Connoll, Downing, A. Chambers, Bradshaw, Sawyers, Baxendale (Benning 66), Cain, J. Chambers (Purkiss 70), Forde (Manset 83).
Subs: MacGillivray (GK), Flanagan, Grimes, Henry.
Attendance: 5930 (1772 Sky Blues)
Referee: C Boyeson