Wales pushed Six Nations title favourites Ireland to the limit in Cardiff.